apple's UINavigation Controller Class Referenceは、pushViewController:animated:メソッドはタブバーコントローラーのインスタンスをスタックにプッシュできないと言っています。 :Tab bar controller inside a navigation controller, or sharing a navigation root viewナビゲーションコントローラーのタブバーコントローラーは機能しますが、参考文献には表示されません
しかし、ナビゲーションコントローラのスタックにUITabBarControllerのインスタンスを追加するとうまくいくようです。私はXCodeの4.2(ベータ、確か)+のiOS 5を用いて以下のようないくつかのサンプルコードを作っている:
- (void)viewDidLoad
{
[super viewDidLoad];
self.secondCtrl = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
self.secondCtrl.title = @"Second";
self.thirdCtrl = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];
self.thirdCtrl.title = @"Third";
self.tabCtrl = [[[UITabBarController alloc] init] autorelease];
self.tabCtrl.title = @"Tab!";
self.tabCtrl.viewControllers = [NSArray arrayWithObjects:self.secondCtrl, self.thirdCtrl, nil];
}
- (IBAction)goNext:(id)sender {
[self.navigationController pushViewController:self.tabCtrl animated:YES];
}
上記のコードは、ウィンドウのルートビューコントローラのソースコードの一部です。
リンゴの参照が古くなっているのですか、コードが異常に機能しているのでしょうか?