2015-05-11 31 views
1

我想調用根控制器,我不知道調用它的代碼。我正在使用一個條件,它將檢查以前的視圖控制器是什麼,一塊代碼將運行取決於它是什麼。這裏是我的代碼:調用Swift中的前一個視圖控制器

SecondViewController

override func viewDidLoad () { 
    super.viewDidLoad () 

    let previousController = storyboard!.instantiateViewControllerWithIdentifier ("firstViewController") as? FirstViewController 

    //HELP IN LINE BELOW 
    //if root view controller == previousController { 
       //run some code 
    //} 
} 
+0

'instantiateViewControllerWithIdentifier'將創建每次一個新的視圖控制器。你想達到什麼目的? – Moxy

+0

[你如何在視圖控制器和Swift中的其他對象之間共享數據?](http://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and - 其他的對象,在-SWIFT) – nhgrif

回答

8
let stack = self.navigationController.viewControllers 
if (stack.count > 1) { 
    let previousController = stack[stack.count-2] 
} 

或者,如果你沒有一個導航控制器

let previousController = self.presentingViewController 

而且,僅僅是明確的,根視圖控制器會堆棧中的第一個視圖控制器,即:

self.navigationController.viewControllers.firstObject 

var previousController : UIViewController = self 
var rootController : UIViewController? 
do { 
    var rootViewController = previousController 
    var previousController = rootViewController.presentingViewController 
} while (previousController != nil) 
相關問題