Tweetieアプリのような構造の UI を実装しようとしています。これは次のように動作します。最上位のビュー コントローラーは、ルート ビューが "アカウント" テーブル ビューであるナビゲーション コントローラーのようです。いずれかのアカウントをクリックすると、下部にタブ バーがある第 2 レベルに移動します。各タブ項目には異なるリストが表示され、さらにドリルダウンできます (後続のレベルにはタブ バーは表示されません)。
したがって、実装階層は次のようになります。
UINavigationController
- アカウント:
UITableViewController
UITabBarController
- ツイート:
UITableViewController
- ツイート/ユーザー/その他の詳細ビュー
- 返信:
UITableViewController
- ...
- ツイート:
- アカウント:
これは機能しているように見えます[^1]が、SDKドキュメントによるとサポートされていないようです-pushViewController:animated:
(強調を追加):
viewController : スタックにプッシュされるビュー コントローラー。タブ バー コントローラーのインスタンスにすることはできません。
非公開 API などは避けたいのですが、問題なく動作しているように見えるのに、なぜこのような使用が明示的に禁止されているのかわかりません。理由を知っている人はいますか?
タブ バー コントローラーをメイン コントローラーとして配置し、各タブに個別のナビゲーション コントローラーを配置することを考えました。これに関する問題は、各ナビゲーション コントローラーが単一のルート ビュー コントローラー (つまりTweetieの「アカウント」テーブル) を共有する必要があることです。最初から。言うまでもなく、別のアカウントを選択するときのすべての簿記はおそらく苦痛でしょう.
これを正しい方法で実装するにはどうすればよいですか?
[^1]: タブ バー コントローラーは、そのレベルのタブ バー コントローラーのナビゲーション項目が選択されたタブのナビゲーション項目と同期し続けるようにサブクラス化する必要があり、個々のタブのテーブル コントローラーは、それぞれの詳細ビューをself.tabBarController.navigationController
代わりにプッシュする必要があります。 self.navigationController
.