1

S.O全体で検索しましたが、同様の記事が見つかりましたが、解決策はありませんでした。以下は私のビュー階層のスクリーンショットは、以下のように、私が試してみましたコードの多くのスニペットの enter image description hereタブバを持つアプリケーションデリゲートの現在のビューコントローラ - >ナビコントローラ - >階層の表示 - iOS Swift

一つは次のとおりです。

  var storyBoard = UIStoryboard() 
      if UIDevice.current.userInterfaceIdiom == .pad { 
       storyBoard = UIStoryboard(name: "iPad", bundle: nil) 
      } else { 
       storyBoard = UIStoryboard(name: "Main", bundle: nil) 
      } 


      let tabVc = self.window?.rootViewController as! UITabBarController 


      let mynVC = storyBoard.instantiateViewController(withIdentifier: "nav") as! UINavigationController 


      let calcVc = storyBoard.instantiateViewController(withIdentifier: "destVc") 


      tabVc.present(mynVC, animated: true, completion: {() -> Void in 
       // Segue , do stuff 

      }) 

上記のコードは、ナビゲーションバーで正しいタブを提示したが、そこにありますtaborは存在しない。

私は、ナビゲーションバーとタブバーを持つタブを提示するフォースタッチボタンを持っていますが、誰もその方法を知っていますか?

+0

なぜを表示しますよナビゲーションバーを表示しているタブバービューコントローラですか?ナビゲーションバーを現在のコントローラとしてタブバービューコントローラに設定する必要があります。このナビゲーションコントローラが配列内の項目の1つであるタブバービューコントローラに、ビューコントローラの配列を設定する必要があります。 –

答えて

3

私は現時点でこれを完全にテストすることはできませんが、タブバーではビューコントローラーを表示しないと思います。 View Controller項目とselectedViewControllerプロパティを設定します。

これは動作するはずです、私はそれをテストし、まもなく更新、

var storyBoard = UIStoryboard() 
     if UIDevice.current.userInterfaceIdiom == .pad { 
      storyBoard = UIStoryboard(name: "iPad", bundle: nil) 
     } else { 
      storyBoard = UIStoryboard(name: "Main", bundle: nil) 
     } 


     let tabVc = self.window?.rootViewController as! UITabBarController 

     let mynVC = storyBoard.instantiateViewController(withIdentifier: "nav") as! UINavigationController 

     let calcVc = storyBoard.instantiateViewController(withIdentifier: "destVc") 

     tabVc.viewControllers = [mynVC] 
     tabVc.selectedViewController = mynVC 

あなたは以下の持っている他の内容に応じて、あなたもwindow.setKeyAndVisibleを(呼び出す必要があります)実際に

+0

完全にうまくいって、私は実際にプロジェクトの他のタブを追加するためにtabVc.viewController = [mynVC]を編集しました。これは私が探していた正確な結果を生むようです。ありがとう、テストして受け入れられた答えとして印を付けるつもり。 – Jerland2

+0

素晴らしい、嬉しい助け:)プロジェクトの幸運 – Scriptable

+0

簡単な質問、私はビューのコントローラを表示したい場合は、この実装で別のものにsegue。私は単に "calcVc.performsegue(withIdentifier:" testSegue "、送信者:自己)と呼ぶでしょうか? – Jerland2

関連する問題