0

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]; 
} 

上記のコードは、ウィンドウのルートビューコントローラのソースコードの一部です。

リンゴの参照が古くなっているのですか、コードが異常に機能しているのでしょうか?

答えて

1

UITabBarControllerはUIViewControllerを継承しているので、あなたのコードが示すように、ナビゲーションスタックにプッシュすることは可能ですが、一般的にAppleは推奨しません。アップルからiOS Human Interface Guidelines

一般に、アプリケーションレベルで情報を整理するには、タブバーを使用します。タブバーは、メインのアプリケーションビューでの使用に適しています。これは、情報階層を平坦化し、複数のピア情報カテゴリまたはモードに一度にアクセスできるようにするためです。

もちろん、ルールには常に例外があります。そのため、あなたの最善の判断を使用して、ユーザーに最適なものを決定することをおすすめします。

関連する問題