2012-04-16 66 views
1

我一開始並不信任賽車(因爲如果他們沒有正確設置並且因爲我不清楚發動機蓋下發生了什麼),但是我發現我更多地使用了它們。儘管如此,我仍然不完全「得到」正在發生的事情。segues:調用seque的控制器實例會發生什麼?

我有沒有參與的UINavigationController的ViewController甲和ViewController B之間的SEGUE。它做了一個FlipHorizo​​ntal轉換,我喜歡。

當A發起SEGUE,會發生什麼給A實例?我在A的viewDidUnload方法中記錄了一條日誌,並且它沒有被調用。 A仍然潛伏着嗎?我希望能夠繼續回到A的同一個實例,它的所有變量都是完整的,但我一直無法弄清楚如何做到這一點。

作爲一個測試,我在一個導航控制器嵌入,並試圖既是賽格瑞和推到B - ,沒能要回我的A.實例什麼我搞砸了這裏?

回答

0

記住視圖和控制器之間的區別。呼叫控制器仍然在,它的視圖也是如此。但是,任何不在屏幕上的視圖都可以由系統卸載。這是viewDidUnload將被調用。

基本上,一個控制器,像其他的對象,生活,直到所有對它的引用都消失了。此外,控制者擁有的任何東西都還活着。然而,它仍然活着,它可以得到兩個重要的信息,它告訴它「擺脫你不需要或可以重建的東西」。

其中之一是viewDidUnload。另一個是didReceiveMemoryWarning。

所以,是的,如果你有在您NavController深堆棧100視圖控制器,那麼所有的100個視圖控制器仍然在周圍......儘管他們的一些觀點可能不是。

+0

感謝您的回覆。是否有任何有效的設計模式將呼叫控制器(A)傳遞到目標控制器(B),以便在從由B發起的輪詢返回時可以將呼叫控制器(A)設置爲目標控制器?可能不是,但我想問我 – 2012-04-17 19:30:45

+0

對不起,我迷失在那個問題的某個地方。我認爲你所描述的是通過委派或通知來處理的。在A給B打電話之前,他會做一些類似b.delegate = self的事情,當B完成時,他會通知代理他完成了。 A的代表處理程序將解散控制器。如果您使用導航控制器,它將自動處理您的推送/彈出。 – 2012-04-17 19:41:59

+0

謝謝 - 我想我已經整理出來了 – 2012-04-18 00:12:24

相關問題