视图中的常见视图控制器 - 代码可重用性

时间:2012-04-09 11:15:44

标签: iphone ios

我的大多数 viewControllers 中几乎没有常见的观点。我注意到我可以重用所有 viewControllers 的单个代码,这是绝对明智的。为此我决定创建一个类 Utils ,它有静态方法,如

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

在我的情况下,常见的视图是三个标签和两个图像。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

或者使用xib文件