私のアプリケーションのrootViewControllerを変更しようとしていて、それは完全に動作します。しかし、rootViewControllerを変更した後、私のnavigationControllerはnil.Becauseを返すので、新しいコントローラself.navigationController.pushViewControllerをプッシュする簡単なコードは機能しません。swift navigation controller return nil rootviewcontrollerを変更した後
これまで、私は自分のrootViewControllerを変更したい理由を説明したいと思います。私はログインページ(初期表示コントローラ)を持っており、成功したログインユーザーはUITabBarController(3つのタブ)にリダイレクトされます。今私はrootViewControllerをこのUITabBarControllerに変更したいと思います。これは次のコードでうまくいきました。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let destVC = self.storyboard?.instantiateViewController(withIdentifier: "home_view")
let rootViewController = appDelegate.window?.rootViewController as! UINavigationController
appDelegate.window?.rootViewController = destVC
ここで、rootViewControllerを変更すると、3つのタブとそれぞれのビューコントローラが完全に機能しています。しかし私のView Controllerの1つでは、ボタンをクリックしてそのボタンをクリックすると、新しいコントローラをユーザーにプッシュしたいと思う。今ここでは、ナビゲーションビューコントローラを返すという問題に直面しています。
let destVC = self.storyboard?.instantiateViewController(withIdentifier: "menu_items_view") as! MenuItems
self.navigationController?.pushViewController(destVC, animated: true)
単純なコードを使用すると何も起こりません。私がデバッグできるのは、自分のself.navigationControllerがnilを返すことだけでした。誰もが私の流れが間違っていると説明することはできますか?
ビュー階層内にナビゲーションコントローラがありますか?あなたが削除して削除したことが私には見えます。 @DanielT。 –
はい、私はビュー階層内のナビゲーションコントローラを持っています。私はあなたを示すスクリーンショットを追加しました。私が試みているのは、ルートビューコントローラをUITabBarControllerに変更することです。これはうまくいきます。あなたが青いボタンで2つのタブイメージで見ることができるように、私はそのボタンをクリックして別のコントローラを押すと何も起こりません。 – BhumaJ