web-dev-qa-db-ja.com

ナビゲーションコントローラーでTab Bar Controllerを正しい方法で実装する方法

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は自動的に表示されません。

46

こんにちは、独自のNavigation ControllerのTab Bar内にある各View Controllerを埋め込む必要があります。そのため、フローは次のようになります(HomeVCは独自のNavControllerに組み込まれています)。

                                         / --> `NavController` --> `ViewController1`
                                         | --> `NavController` --> `ViewController2`
`HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3`
                                         \--> `NavController` --> `ViewController4`
  1. Editor-> Embed In-> Tab Bar Controller(またはNavigation Controller)に移動します

How to embed correctly

質問に答えるには:

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

142
App Dev Guy

Swift 2では、Xcode 7にはUINavigationControllerを追加するための非常に便利な機能があります。

  1. UITabBarNavigationControllerの「タブ」として使用されているUIViewControllerを選択します
  2. 上部のXcodeメニューで、「エディター」を選択します->
  3. 「埋め込み」->
  4. 「ナビゲーションコントローラー」

    enter image description here

18
Brian Ogden

そのようなものを持ちたい場合:

TabBarController -> Navigation Controller -> View Controller with a Table View -> and from the TableView a MasterDetailViewたとえば:

MasterDetailViewにナビゲーションがない(TableViewのViewControllerに戻るボタンがない)という問題がありました。

回避策は次のとおりです。

TableViewとMasterDetailViewの間のセグエを次のように設定します。 種類:プッシュ(非推奨)

アプリを実行します...戻るボタンが表示されたら...種類をShow (e.g. Push)に変更し、もう一度実行します->動作するはずです。

1
Pixki