iPod /音楽のようなタブ/ナビゲーションハイブリッド
-
05-07-2019 - |
質問
iPod / Musicアプリケーションがプレイリストをナビゲートするために使用するのと同じナビゲーションとタブバーのハイブリッドを使用したいアプリケーションに取り組んでいます。
基本的に:
- 特定のリストツリーをさらに深く掘り下げるためのナビゲーション。
- リストを切り替えるための下部にあるタブバー。ほとんど/すべての従属画面に表示されます。
- タブバーの内容は、すべての画面間で一定です。
- タップされたときのタブバーの反応は、すべての画面で同じです。ユーザーをルートに戻して、リストに表示します。
タブに埋め込まれたナビゲーション、ナビゲーションに埋め込まれたタブ?どちらも、私が望んでいることをまったく実行しないようです。一方、基本的なナビゲーションアプリを使い続けてタブを追加するだけの場合、余分なコードがたくさん必要になることはありませんか?
これに最適な基本的なアプローチは何ですか?
解決
これを行うアプリを作成しました。それについて考える最良の方法は、最も狭い部分である個々のView Controllerから始めることです。 iPodの例では、アーティスト、アルバム、プレイリスト、曲などのコントローラーが含まれます。プレイリストをタップすると、曲のリストが表示されます。これらは2つの別個のView Controllerです。
iPodアプリに表示される各タブには、ナビゲーションコントローラーがあります。 navコントローラーは、アプリのタブのルートビューコントローラーをラップします。そして、各navコントローラーがTabコントローラーのViewControllersとして設定されます。コードは次のようになります
FirstTabViewController *first = [[FirstTabViewController alloc] init...];
SecondTabViewController *second = ...;
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:first];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:second];
myTabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil];
// Then make sure to release things to avoid leaks
たとえば、プレイリスト->選択したプレイリスト内の曲のリストからの移行を処理する場合は、プレイリストビューコントローラーで実行します( [self.navigationController pushViewController:theListOfSongsViewController animated:SUREWHYNOT]
)。
他のヒント
これまでのところ、各ペインのUINavigationControllersとUITabBarControllerを見て、ターゲットタブのNavigation Controllerをタブスイッチのルートに戻すための小さなカスタムコードを使用しています。
Appleには、View Controller(Tab Controller内のNavigation Controller)の組み合わせに関する優れたドキュメントがあります