私のプロジェクトには3つのストーリーボードがあります。メインと2つのワークフローストーリーボードがあります。各ストーリーボードは、独自のナビゲーションコントローラに組み込まれています。別々のストーリーボードでUITabBarControllerをプログラムで正しく設定する方法
私はストーリーボードをワークフローに分割しているので、プログラムによって各ワークフローをタブバーに追加する必要があります。これは正しく動作しています。
私の問題は、(ワークフロー内の)ビューをワークフローナビゲーションコントローラにプッシュしようとすると発生します。ワークフローのナビゲーションコントローラは決して使用されていないようです。ワークフローごとにナビゲーションバーの色を変更することでこれを確認しました。
2つのオプションを試しましたが、それぞれワークフローで設定しました。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let mainStoryboard = UIStoryboard(name: "Workflow 1", bundle: nil)
let actionItemStoryboard = UIStoryboard(name: "Workflow 2", bundle: nil)
let workflow1Controller = mainStoryboard.instantiateViewController(withIdentifier: "navigationController1")
let workflow1TabItem = UITabBarItem(title: "Item 1", image: nil, selectedImage: nil)
workflow1Controller.tabBarItem = workflow1TabItem
let workflow2Controller = actionItemStoryboard.instantiateViewController(withIdentifier: "workflow2")
let workflow2TabItem = UITabBarItem(title: "Item 2", image: nil, selectedImage: nil)
workflow2Controller.tabBarItem = workflow2TabItem
self.viewControllers = [workflow1Controller, workflow2Controller]
}
オプション1
(かなり確信して、これは間違っているが、私が行ったテストだった)ナビゲーションコントローラを指すように、タブ・ビュー・コントローラを設定します。これにより、ナビゲーションアイテムを表示する方法は表示されません(戻るボタン)。
リストビューを指すようにタブ・ビュー・コントローラの設定オプション2
(以下のスクリーンショットを参照)。これにより、戻るボタンが表示されますが、セルをクリックすると、最後のビューがタブの上に表示されます。
UITabBarControllerに埋め込まれたUINavigationControllerは必要ありません。あなたのタブにそれらを置いても問題ありません。次に、各タブには独自のナビゲーションがあります。 –
新しい「メインストーリーボード」のイメージをご覧ください。ここで私の例をあまりにも曖昧にして、単純化しようとしました。私は実際にそこにナビゲーションコントローラも実際に必要です。 – sargturner
私はUITabBarControllerをナビゲーションコントローラ内に置くことはサポートされているオプションだとは思わない。 4つの方法のリストについては、https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/TabBarControllers.html#//apple_ref/doc/uid/TP40011313-CH3-SW2を参照してください。タブバーコントローラを使用します。 (はい、あなたは何かをしようとすることができますが、UI標準と戦わない方が良いです。) –