0

iOS アプリケーションでこのような構造を使用するのは良くないと読みました。UINavigationControllerしかし、アプリケーションに多数の とがある場合はどうなるでしょうかUITabBarController。しかし、1つとUINavigationBar1つUITabBarは常に表示されるだけですか?他UINavigationBarの およびUITabBarは非表示です。

編集済み

たとえば、ナビゲーション ベースのアプリケーションでは、次のコードを呼び出します。

- (IBAction)openTabsController:(id)sender {        

    tabOneController *tabOneViewContr = [[[tabOneController alloc] initWithNibName:@"tabOneController" bundle:nil] autorelease];
    UINavigationController *tabOneNavContr = [[UINavigationController alloc] initWithRootViewController:tabOneViewContr];

    tabTwoController *tabTwoViewContr = [[[tabTwoController alloc] initWithNibName:@"tabTwoController" bundle:nil] autorelease];
    UINavigationController *tabTwoNavContr = [[UINavigationController alloc] initWithRootViewController:tabTwoViewContr];


    UITabBarController *tabContr = [[[UITabBarController alloc] init] autorelease];
    tabContr.viewControllers = [NSArray arrayWithObjects:tabOneNavContr,tabTwoNavContr, nil];
    sel.navigationController.navigationBar.hidden = YES;
    [self.navigationController pushViewController:tabContr animated:YES];
}

このメソッドを呼び出した後、2 つUINavigationControllerの と 1つの がありUITabBarControllerます。同時に、私は画面上にUINavigationBar1つと1つを持ってUITabBarいます。

編集済み

おおよそのスキーム。

ここに画像の説明を入力

最初から、ビュー (円) 間を移動できる UINavigationController があります。次に、押すと UITabBar が表示され、ビューを切り替えることができます。2 つの小さな四角形がある長方形は、2 つの UITabBarItem を持つ UITabBar を持つビューです。UITabBarItem を押すと、別の UIView が表示されます。この UIView では、別の UITabBar で別のビューを呼び出すボタンを押すことができます。現在の UITabBar は、別の UITabBar で非表示にされていない場合、プッシュ後に表示されます。今はもっと明確ですか?上記のコードはほぼ完璧に動作します (一部のアニメーションを除き、Apple の制限は含まれていません)。

4

2 に答える 2

1

ガルゴ、

あなたの質問を理解できたかどうかはわかりませんが、アップルのドキュメントは明確です。あなたがそれを使うなら、- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animatedそれは言うviewController

タブ バー コントローラーのインスタンスにすることはできません。また、ナビゲーション スタック上にまだ存在していてはなりません。

あなたがするので

[self.navigationController pushViewController:tabContr animated:YES];

ナビゲーション スタック内でタブ バー コントローラー インスタンスをプッシュしています。

達成できる構造を追加していただければ、別の解決策を見つけるお手伝いができるかもしれません。

それが役立つことを願っています。

于 2012-09-07T07:35:51.347 に答える
1

アプリは、一度に 1 つの動作する tabBarController のみを持つ必要があります。

tabBarController もルート ビュー コントローラーにする必要があります。いつも。(tabBarController の前にログイン ビューなどが必要な場合は、ログイン ビューを削除し、tabBarController を作成してから、それをルートにします)。

これは、Apple のエンジニアが私に個人的に語った Apple のアドバイスです。

アプリは、すばやく簡単に使用/操作できる小さなアプリケーションである必要があります。複数の tabBarController の必要性を感じる場合、UI/ユーザビリティの観点から、アプリの設計は非常に間違っている可能性があります。

于 2012-09-07T11:50:11.710 に答える