我正在嘗試更改我的應用程序的rootViewController,它完美地工作。然而,更改rootViewController後,我的導航控制器返回nil。因爲這甚至我簡單的代碼推任何新的控制器self.navigationController.pushViewController不起作用。swift導航控制器在更改rootviewcontroller後返回nil
在此之前,我想解釋爲什麼我想改變我的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個標籤和他們各自的視圖控制器工作完美。但在我的一個視圖控制器中,我有按鈕,單擊該按鈕時,我想將新控制器推送給用戶。現在我在這裏面臨着無返回導航視圖控制器的問題。
let destVC = self.storyboard?.instantiateViewController(withIdentifier: "menu_items_view") as! MenuItems
self.navigationController?.pushViewController(destVC, animated: true)
當我使用上面的簡單代碼時,什麼都不會發生。所有我能夠調試的是我的self.navigationController返回零。任何人都可以解釋我的流程中的錯誤?
您確定您的視圖層次結構中甚至有導航控制器嗎?它在我看來你已經刪除並刪除它。 –
@DanielT。是的,我的視圖層次結構中有導航控制器。我添加了截圖以向您展示。我正在嘗試將根視圖控制器更改爲UITabBarController,這很好。正如你可以在藍色按鈕的2選項卡圖片中看到的,當我嘗試按下另一個控制器時,沒有任何反應。 – BhumaJ