2015-09-08 41 views
0

我有兩個導航控制器(A - >B)之間的segue。使用按鈕,我可以在這些控制器之間無縫地導航。問題是,在控制器B中,我想訪問堆棧中較低的控制器A.我想這樣的:因爲它說我不能投BA導航控制器之間的爭執似乎沒有推堆棧,但後退按鈕的作品

self.navigationController!.viewControllers[0] as! A 

這給了我一個錯誤。檢查self.navigationController!.viewControllers的大小表明其計數爲1A去了哪裏?

的賽格瑞類型是「展(例如推送)」

+0

的println(self.parentViewController .childViewControllers?)有什麼出來把這個代碼? –

+0

'[]' – Max

+0

我認爲,如果您嘗試推送更多,那麼它會工作。而A不在viewControllers堆棧中,因爲A是一個根視圖控制器。因爲我只是認爲它是一個答案:) – Miknash

回答

2

我猜你不真的有兩個導航控制器之間SEGUE。如果您的應用程序是標準的主細節應用程序,則實際上在A.rootViewControllerB(其中AB是導航控制器)之間有一段延遲,並且您指的代碼位於B.rootViewController(例如「DetailViewController」)中,而不是B

因此,selfB.rootViewControllerself.navigationControllerB,所以self.navigationController!.viewControllers[0]B.rootViewController,像您期望的不A.rootViewController

試試這個:

let A = self.navigationController!.parentViewController! as! UINavigationController 
    NSLog("%@", A.viewControllers[0]) 
相關問題