我的大多数 viewControllers 中几乎没有常见的观点。我注意到我可以重用所有 viewControllers 的单个代码,这是绝对明智的。为此我决定创建一个类 Utils ,它有静态方法,如
+(void)createCommonViews:(float)yAxis:(NSString*)text;
在我的情况下,常见的视图是三个标签和两个图像。
问题:我无法从 Utils 添加这些视图。我想知道如何将self作为参数发送,以便我可以添加Utils的视图。在viewController之外添加视图可能是错误的。在那种情况下可以解决什么问题?在UIView
中获取所有这些观看次数,将 Utils 方法的返回类型设置为UIView
,然后将UIView
添加到 viewController (之后)从 viewController 调用方法可能会解决我的问题。但我正在寻找的是一些其他解决方案。
答案 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文件