我是iOS开发的新手。 为了使我的iOS应用程序很好地划分,我想以编程方式创建UIView和UIViewController,并在创建后将它们绑定在一起。
因此,我执行以下操作:在我的视图控制器中,我有这个:
-(void)loadView {
NSLog(@"HPSMainMenuViewController loadView starting");
HPSMainMenuView* mainmenuView = [[HPSMainMenuView alloc]initWithFrame:CGRectZero];
self.view = mainmenuView;
}
在我看来,我有这个:
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
NSLog(@"HPSMainMenuView initWithFrame starting");
[self setup];
}
return self;
}
-(void)setup {
UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.tag = E_PROFILE_BUTTON;
[btn setTitle:@"Option1" forState:UIControlStateNormal];
[self.view addSubview:btn ];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.tag = E_CONTACTS_BUTTON;
[btn setTitle:@"Option2" forState:UIControlStateNormal];
[self.view addSubview:btn ];
self.title = @"Hello";
}
这是执行此操作的正确方法吗(鉴于我想要完全的程序控制)。 在视图控制器中动态构建视图似乎是错误的,因此我的方法是在实际的UIView
类中构建视图。
最后,我正在使用loadView;我应该使用viewDidLoad
吗? 如果是这样,为什么?
非常感谢。
你正在做的事情是正确的,而且实际上很好。许多开发人员将他们的视图控制器和视图紧密地联系在一起,但如果你想将它们分开,那就太好了。
loadView
是您应该创建和初始化所有内容的地方。 例如,如果由于内存警告(例如)而卸载/重新加载视图,则可以多次调用viewDidLoad
。因此,viewDidLoad
您可以恢复保存的状态,使您的视图正确反映您的模型,或者您在loadView
中无法执行的任何其他初始化。