我目前正在編寫一個應用程序,我們在用戶第一次打開該應用程序時啓動漫遊。最後,我們要求用戶填寫一些細節,爲此我希望他按下按鈕以重定向到設置頁面。實例化視圖,然後導航
問題是,此頁面位於導航控制器的下一級(從着陸頁開始)。就目前而言,我可以正確實例化着陸頁,但重定向到設置頁面從不發生。
let mainView = self.storyboard?.instantiateViewControllerWithIdentifier("NavCtrl")
self.presentViewController(mainView!, animated: false, completion: nil)
// the above works correctly and sends us to the landing screen
// (rootView of the navigation controller)
// the following lines never have any effect though
let settingsView = self.storyboard?.instantiateViewControllerWithIdentifier("Settings View")
self.navigationController?.pushViewController(settingsView!, animated: false)
我想這是因爲我試圖打電話.pushViewController
故事板來得及instiate第一或第二視圖之前。
所以,我有幾個問題:
- 有沒有一種辦法,實際上,創建一個視圖,然後導航到另外一個已經被實例化後,對不對? (這是爲了保持導航堆棧並保持準確的導航欄行爲)
- 如果沒有,是否有可能以編程方式填充導航堆棧,以便我只需要實例化設置視圖?這是爲了在導航欄中仍然有後退按鈕可以發送到登陸屏幕?
在此先感謝球員
當你做'self.navigationController?.pushViewController(settingsView!,animated:false)'你確定'self.navigationController?'不是零?主視圖控制器不在導航堆棧上呈現,正在以模態呈現 – Leonardo
在您的第一個視圖控制器的viewDidLoad中,您可以將self.performsegue ...添加到您正在執行兩次的其他視圖 –
。 1ce'presentViewController',然後'self.navigationController?.pushViewController'。正如你所提到的,下面的兩行永遠不會被執行。你所要做的就是在你最初推送的navigationController的'viewDidLoad'中設置一個函數,該函數實例化爲你希望推送到的另一個VC。並且要有後退按鈕,將導航嵌入到NavigationController中。 – lukaivicev