0

設計要件:

  1. ユーザーが選択できるアイテムのリストを表示する
  2. アイテムを選択したら、戻るボタンでユーザーを新しいビューに移動します。新しいビューには、最初の画面には存在しないタブのリストが下部に含まれている必要があります
  3. タブ内のアイテムをクリックすると、新しい画面が表示され、戻るボタンが表示され、タブは下部に表示されたままになります。
  4. タブをクリックすると、ユーザーは階層を #2 に戻します。最初の画面ではありません。

私は次の構造を試しました:

そしてまた

  • UINavigationController
  • UIViewControllerとともにUITableView
  • UITabbarController

どちらの場合も を表示するUITabBarと問題なく動作しますが、いずれかのタブでアイテムをクリックして新しい を押すとUIViewController、下部のタブが消えます。UIViewControllersのタブ内で発生するすべてのプッシュに対して、タブが所定の位置に残るようにしますUITabBarController

関連する質問はこれですが、タブ内にプッシュされたビューコントローラーの問題には対処していません: ナビゲーションコントローラー内のタブバーコントローラー、またはナビゲーションルートビューの共有

rootcontroller を に変更する必要がありUITabControllerますか? 誰かが実際にこれを実装しましたか?

4

2 に答える 2

3

要件に対応するために、ビュー階層のレイアウトを変更したいようです。View Controller を次のように提示する必要があります。

UITabBarController -> UINavigationController -> UIViewController

アプリのデリゲートでは、次の行に沿って何かを使用してプログラムでこれを実装できます。

UIViewController *viewControllerOne = [[[UIViewController alloc] init] autorelease];
UINavigationController *navigationControllerOne = [[[UINavigationController alloc] initWithRootViewController:viewControllerOne] autorelease];

UIViewController *viewControllerTwo = [[[UIViewController alloc] init] autorelease];
UINavigationController *navigationControllerTwo = [[[UINavigationController alloc] initWithRootViewController:viewControllerTwo] autorelease];

UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease];

[tabBarController setViewControllers:[NSArray arrayWithObjects:navigationControllerOne, navigationControllerTwo, nil]];

[[self window] setRootViewController:tabBarController]

上記はチェックしていません。メモリから書き込んだだけですが、例として必要なことを行う必要があります。

この形式を使用すると、タブ バーが消えることなく、追加のビュー コントローラーをナビゲーション コントローラー スタックにプッシュできます。

タブ バー コントローラーをルート ビュー コントローラーとして持たずにこのビュー階層をプッシュする場合は、アプリ デリゲートでルート ビュー コントローラーとして設定する代わりに、タブ バー コントローラーをプッシュするだけです。

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

于 2012-06-21T10:43:50.220 に答える
3

正しい構造は次のとおりです。

UITabBarcontroller (UIWindow's rootViewController)
->UINavigationController (first tab)
-->UIViewController
->UINavigationController (second tab)
-->UIViewController
于 2012-06-21T10:39:04.013 に答える