navigationController を実装したときに、非常に奇妙な動作に遭遇しました。UITableView を持つ LogInViewController があり、セルは次のように入力されます。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 2;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
return cellUsername;
}
if (indexPath.row == 1){
return cellPassword;
}
else{
return nil;
}
}
cellUsername と cellPassword は、.xib で作成したセルです。この LogInViewController を appDelegate の rootViewController として追加すると、正常に動作します。NavigationController を実装したかったので、navController @property を使用して RootViewController を作成し、appDelagate でこのように呼び出しました
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
RootViewController *rootView = [[RootViewController alloc]init];
rootView.navController = [[UINavigationController alloc] initWithRootViewController:rootView];
self.window.rootViewController = rootView.navController;
[self.window makeKeyAndVisible];
return YES;
そして、viewDidLoad の RootViewController には、次のコードがあります。
[super viewDidLoad];
self.navController = [[UINavigationController alloc]init];
LogInViewController *loginView = [[LogInViewController alloc]init];
[[self navigationController] pushViewController:loginView animated:YES];
LogInViewController を開きますが、最初のセルである cellUsername のみが UiTableView に追加されます。何が問題なのですか? 私はまだ初心者なので、おそらく愚かな何かを見逃しているかもしれません..しかし、それはナビゲーションコントローラーなしで動作するので、かなり混乱しています..ありがとう!