我有一个以编程方式创建的自定义UIview。如何关联自定义UIViewController(以编程方式)
谢谢和问候,
答案 0 :(得分:5)
在loadView
中实施UIViewController
,以编程方式创建视图层次结构,而不使用nib文件。
- (void)loadView {
// allocate the subclassed UIView, and set it as the UIViewController's main view
self.view = [[[UIViewSubclass alloc] initWithFrame:CGRectMake(0, 0, 320, 460)] autorelease];
}
您可以通过两种方式继续设置视图/子视图层次结构。一种是在自定义UIView
的初始化方法中添加它们,如下所示:
// in the MyView.m file
- (id)initWithFrame:(CGRect)f {
if (self = [super initWithFrame:f]) {
// add subviews here
}
return self;
}
第二种方法是继续使用loadView
子类中实现的UIViewController
方法,并使用[self.view addSubview:anotherView]
。 (或者,使用viewDidLoad
中的UIViewController subclass
方法。)
注意:将initWithFrame
:替换为自定义UIView
的初始化方法(例如initWithDelegate:
)。
答案 1 :(得分:1)
假设您创建的视图名为newView
,控制器为newController
。简单的方法是:
newController.view = newView;
但我宁愿继承UIViewController
并覆盖其- (void)loadView
和- (void)viewDidLoad
方法,并在那里创建和/或操纵视图 - 这就是Apple希望您这样做的方式,并且有充分的理由。