以编程方式创建 UIView 和 UIViewController 并链接在一起的正确方法



我是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中无法执行的任何其他初始化。

相关内容

  • 没有找到相关文章

最新更新