0

新しいView Controllerをプログラムで開くときにこの問題が発生しています。ナビゲーションコントローラ内のView Controllerにタブバーが表示されない

let controller = self.storyboard?.instantiateViewController(withIdentifier: "overViewScreen") as! OverviewViewController 
controller.user = self.userObject 
let navigationController = UINavigationController(rootViewController: controller) 
self.present(navigationController, animated: true, completion: nil) 

私のプロジェクトの構造:タブバーが(右表付き)ビューコントローラ上に示されているが、私はアプリを実行すると、それはこのようになります 私のストーリーボードstoryboard

enter image description here

私はあなたが私を助けることを願っています! ありがとうございます。

答えて

0

タブバーコントローラなしでNavigationControllerを表示しています。 TabBarControllerを表示する必要があります。あなたはコメントからコントローラ

コードでやっただけのよう

あなたTabBarController識別子を与え、それらをインスタンス化します。

let tabVC = UIStoryboard(name: "NameOfYourStoryboard", bundle: Bundle.main).instantiateInitialViewController() as! UITabBarController 

let navVc = tabVC.viewControllers.first as! UINavigationController 

let vc = navVc.viewControllers.first as! OverviewViewController 
vc.incorrectAuthorization = SettingsAuthorizationMethod.fingerprint 
vc.user = self.userObject 

present(navController, animated: true, completion: nil) 
+0

このようなことをお考えですか? ?(: "TabBarController" withIdentifier) self.present(tabBarController!アニメーション:本当、完了:ゼロ) –

+0

またはこのような何か: tabVC = UIStoryboard(名前みましょう:tabBarController = self.storyboard .instantiateViewControllerましょう "NameOfYourStoryboard"、バンドル:Bundle.main).instantiateInitialViewController()as! UITabBarController navVc = tabVC.viewControllers.firstを! vc = navVc.viewControllers.firstを! LoginViewController vc.incorrectAuthorization = SettingsAuthorizationMethod.fingerprint vc.user = self.userObject 存在を(からNavControllerは、アニメーション:真、完了:ゼロ) –

+0

だから今私が持っている:聞かせtabBarController = self.storyboard .instantiateInitialViewController()のように?! UITabBarController navVc = tabBarController.childViewControllers.firstを! vc = navVc.childViewControllers.firstを!概要ビューコントローラ vc.user = self.userObject self.present(navVc、animated:true、completion:nil)。エラー:UITabBarControllerにLoginViewControllerをキャストできませんでした –

0

[OK]を、私はこのようにそれを修正するために管理:

let vc = self.storyboard?.instantiateViewController(withIdentifier: "TabBarController") as! TabBarController 
          vc.user = self.userObject 
          let nvc = UINavigationController(rootViewController: vc) 
          self.present(nvc, animated: true, completion: nil) 

私は別のコントローラクラス "TabBarController"を作成し、このクラスに "user"というプロパティを追加しました。私の "OverViewController"では次のようにプロパティを取得できます:

let tabBar: TabBarController = tabBarController as! TabBarController 
    user = tabBar.user 

ありがとうございました!

関連する問題