0

私のプロジェクトには 3 つのストーリーボードがあります。メイン ストーリーボードと 2 つの個別のワークフロー ストーリーボードがあります。各ストーリーボードは、独自のナビゲーション コントローラーに埋め込まれています。

ストーリーボードをワークフローに分割したので、各ワークフローをプログラムでタブ バーに追加する必要があります。これは正しく機能しています。

ビュー (ワークフロー内) をワークフロー ナビゲーション コントローラーにプッシュしようとすると、問題が発生します。ワークフローのナビゲーション コントローラーが使用されていないようです。各ワークフローのナビゲーション バーの色を変更して、これを確認しました。

それぞれワークフローに設定された 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

リスト ビューを指すようにタブ ビュー コントローラーを設定します (以下のスクリーン ショットを参照)。これにより、戻るボタンが表示されますが、セルをクリックすると、最後のビューがタブの上に表示されます。

リスト ビューのプッシュ中にエラーが発生しました


メインストーリーボード ここに画像の説明を入力

ワークフロー 1 絵コンテ ワークフロー 1 絵コンテ

ワークフロー 2 絵コンテ ワークフロー 2 絵コンテ

4

1 に答える 1

0

これを解決するために、私は次のことをしました:

  • ワークフローからナビゲーション コントローラーを削除する
  • 「MockTabController」を作成します (ビューの下部に配置された UITabBar を持つ UIViewController のみ)。

UITabBar を持つ UIViewController ができたので、各ワークフロー ビューで UIViewController の代わりにこのビューを拡張できるため、タブ バーはアプリ全体で一貫しています (必要な場所)。

ワークフローに UITableViewController がある場合は、UITableViewController を子ビューとして ViewController 内に埋め込むだけです。その後、ViewController は私の MockTabController を拡張し、その結果、動作するために変更を必要としないタブ バーを備えた TableViewController が作成されます。

アプリ全体のナビゲーションを簡素化するために、ナビゲーション スタックをタブ コントローラーの先頭にリセットするだけです。タブ バーの項目をクリックすると、すべてのワークフローが巻き戻され、新しいワークフローの開始がプッシュされます。

于 2016-12-27T18:06:31.100 に答える