1

私は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"; 
}

これはこれを行う正しい方法ですか(完全なプログラムによる制御が必要な場合)。UIViewViewController内でビューを動的に構築するのは間違っているように思われるため、実際のクラス内でビューを構築するという私のアプローチです。

最後に、loadViewを使用しています。使用する必要がありviewDidLoadますか?もしそうなら、なぜですか?

どうもありがとう。

4

1 に答える 1

2

あなたがしていることは正しく、そして実際に良いことです。多くの開発者は、ビューコントローラーとビューを緊密に結び付けていますが、それらを別々に保ちたい場合は、それは素晴らしいことです。

loadViewすべてを作成して初期化する必要がある場所です。viewDidLoadたとえば、メモリの警告が原因でビューがアンロード/リロードされた場合は、複数回呼び出すことができます。ここviewDidLoadで、保存された状態を復元したり、ビューにモデルを正しく反映させたり、で実行できないその他の初期化を行ったりしますloadView

于 2012-05-30T11:04:17.467 に答える