2016-04-03 79 views
0

我有一個UIViewController與一個按鈕。如何在swift中從我的UIViewController設置rootViewController?

此按鈕有一個方法,應該切換到另一個UIViewController。以前我曾用它來處理:

self.performSegueWithIdentifier("moveToMainWindow", sender: self) 

,但我想改變它的東西,如:

let sb = UIStoryboard(name: "Main", bundle: nil) 
if let tabBarVC = sb.instantiateViewControllerWithIdentifier("MainWindow") as? TabController { 
    self.rootViewController = tabBarVC 

} 

但是這條線self.rootViewController = tabBarVC帶來錯誤類型的ViewController的值沒有任何成員RootViewController的。

有什麼我可以在這裏修復,以便它可能工作?

我想避免做performSegueWithIdentifier,因爲後來我在做幾次self.dismissViewControllerAnimated(true, completion: {}),在這種情況下,我的MainWindow面板也被解僱了。所以我想如果我在這裏改變segue的類型,這個面板永遠不會被隱藏。

回答

1

rootViewController屬性是UIWindow的屬性,它定義了在應用程序啓動時顯示的第一個或根視圖控制器,並且您無法將其設置爲視圖控制器上的屬性。

你可以做什麼,而不是推動視圖控制器與賽段,是通過故事板啓動視圖控制器,然後推動它使用showViewController:presentViewController:方法在UIViewController。你已經幾乎得到它:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
if let tabBarVC = storyboard.instantiateViewControllerWithIdentifier("MainWindow") as? TabController { 
    self.showViewController(tabBarVC, sender: self) 
} 

另外請注意,您需要調用dismissViewController:completion:tabBarVC

相關問題