1

在我的大多数viewControllers中,我几乎没有共同的视图。我注意到的是,我可以为所有viewController重用单个代码,这绝对是明智的。为此,我决定创建一个具有静态方法 的类Utils

+(void)createCommonViews:(float)yAxis:(NSString*)text;  

在我的例子中,常见的视图是三个标签和两个图像。

问题:我无法从Utils添加这些视图。我想知道如何将 self 作为参数发送,以便我可以从 Utils 添加视图。在 viewController 之外添加视图可能是错误的。在那种情况下,有什么解决办法?将所有这些视图放在 a 中,将Utils方法的UIView返回类型设置为,然后添加到viewController (在从viewController调用方法之后)可能会解决我的问题。但我正在寻找的是其他一些解决方案。 UIViewUIView

4

3 回答 3

1
+(void) createCommonViews:(float)yAxis withText:(NSString*) text toTarget:(UIViewController*) target
{
//create views
    [target addSuview:view];
}

但我认为返回一个 Uiview 然后在 UIViewController 中添加它是一个更好的解决方案。

于 2012-04-09T11:21:28.023 回答
1

您尝试的方法是将您的视图对象作为单例。这充其量是不常见的,最坏的情况是等待发生的崩溃。更好的设计是让每个视图控制器类都有自己的自定义视图实例,如下所示:

@interface MyCommonView : UIView

// ...

@end



@interface MyViewController_A : UIViewController {
   MyCommonView *commonView;
}

@property (strong, nonatomic) IBOutlet MyCommonView *commonView;

@end



// Meanwhile somewhere else...



@interface MyViewController_B : UIViewController {
   MyCommonView *commonView;
}

@property (strong, nonatomic) IBOutlet MyCommonView *commonView;

@end
于 2012-04-09T11:25:23.567 回答
1

创建一个 viewController 作为所有常见内容的父视图,将其命名为 CommonViewController 然后在您希望它出现的所有视图控制器中实现它

-(void) viewDidLoad 
{
   [self.view addSubView:[[CommonViewController alloc] initWithRect:..];
}

或者使用 xib 文件

于 2012-04-09T11:25:51.877 回答