StoryboardとXcode 6を使用しています。Storyboardには次のコントローラーとシーンがあります。
UINavigationController
はルートとしてHomeViewController
を持ちます。 HomeViewController
には、Show (e.g. Push)
UITabBarController
というボタンがあります。 UITabBarController
には4 UIViewControllers
があります。
しかし、私の問題は、UITabBarController
を表示した後、4 UIViewControllers
にナビゲーションバーがないことです。ただし、Show (e.g. Push)
UITabBarController
の場合は、ストーリーボードの初期コントローラーであるナビゲーションコントローラーが埋め込まれている必要があります。私は正しいですか?そして、もしそうなら、ストーリーボードのナビゲーションバーをどのように設定できますか?これは、ストーリーボードに表示されるプッシュされたタブバーにデフォルトのバーイベントがあるためですUIViewControllerを選択し、IDインスペクターでシミュレートされたメトリックをTopプロパティのTranslucent Navigationバーに設定しましたが、追加の手順を実行せずにこのコントローラーとタブバーに自動的に追加されるはずです。
または、ルートビューコントローラーを持つ各Tab Barアイテムに新しいNavigationコントローラーを追加する必要がありますか?
ストーリーボードにショー(プッシュなど)を使用してナビゲーションバーが表示されない主な問題。たとえば、Navigation Controllerを追加してからルート-Tab Bar Controllerとして設定すると、Xcodeは自動的にトップNavigation Barを追加しますが、私の場合HomeViewControllerのようにキューに追加のステップがある場合、トップNavigation Barは自動的に表示されません。
こんにちは、独自のNavigation ControllerのTab Bar内にある各View Controllerを埋め込む必要があります。そのため、フローは次のようになります(HomeVCは独自のNavControllerに組み込まれています)。
/ --> `NavController` --> `ViewController1`
| --> `NavController` --> `ViewController2`
`HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3`
\--> `NavController` --> `ViewController4`
質問に答えるには:
Tab Bar Controllerインターフェイスの各タブは、カスタム(異なる[sic])View Controllerに関連付けられています。ユーザーが特定のタブを選択すると、Tab Bar Controllerは対応するView Controllerのルートビューを表示し、以前のビューを置き換えます。
そのため、タブのルートビューコントローラーをNavigation Controllerに隣接させる必要があります。 View ControllerがNavigationを継承するには、Navigation View Controllerが次にインラインである必要があります。 Tab Barは、ビューを次のインラインに切り替えます。
このドキュメントは、それに関する詳細な情報を提供するのに役立ちます。 https://developer.Apple.com/documentation/uikit/uitabbarcontroller
そのようなものを持ちたい場合:
TabBarController -> Navigation Controller -> View Controller with a Table View -> and from the TableView a MasterDetailView
たとえば:
MasterDetailViewにナビゲーションがない(TableViewのViewControllerに戻るボタンがない)という問題がありました。
回避策は次のとおりです。
TableViewとMasterDetailViewの間のセグエを次のように設定します。 種類:プッシュ(非推奨)
アプリを実行します...戻るボタンが表示されたら...種類をShow (e.g. Push)
に変更し、もう一度実行します->動作するはずです。