2015-01-27 125 views
3

我有3個視圖控制器,以模態方式呈現,我如何關閉視圖控制器並直接從第三個右側回到第一個(根)視圖控制器。從第四個視圖控制器轉到根視圖控制器swift

基本上,當我從第三個調用dismissViewControllerAnimated我希望它也可以關閉第二個視圖控制器並直接返回到第一個視圖,從內存中釋放其他視圖。

編輯

簡單地說,希望從第三視圖去右邊,又回到了第一,而不必經過並關閉在中間。顯然,我不能僅僅介紹第一個形式,因爲這是一個巨大的內存泄漏。

enter image description here

+0

嗨什麼,我有同樣的問題。你解決了這個問題嗎? – 2015-03-03 11:03:03

+0

您需要將所有內容放在容器視圖控制器中,並使用transitionFromViewController:toViewController:方法。 – 2015-03-03 14:43:33

+0

其實我已經能夠將一個按鈕連接到unwindToViewController(在故事板上)並且它關閉了所有我的viewcontrollers(模態地呈現)。如果我不需要按鈕就可以做同樣的事情,也許我會用這個,謝謝。 – 2015-03-03 17:04:02

回答

1

使用NSNotificationCenter了點。 您可以發佈一個通知,當你想關閉所有您的視圖控制器:

NSNotificationCenter.defaultCenter().postNotification("dismissNotification") 

然後使這些視圖控制器登記在viewWillAppear功能聽這樣的通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("dismissFunction"), name: "dismissNotificaiton", object: nil) 

最後,打電話dismissViewController:dismissFunction

self.dismissViewControllerAnimated(true, completion: nil) 
+0

'dismissViewControllerAnimated'似乎總是關閉頂部視圖控制器,即使您在底層視圖控制器中以'self'作爲前綴。 – 2015-01-27 21:18:16

+0

嗯..你認爲有模型視圖控制器設置在另一個導航控制器?這樣,如果您解散主導航控制器,則所有其他控制器將立即解散。 – 2015-01-28 00:52:18

0

試試這個:

self.dismissViewControllerAnimated(true, completion: nil) 

讓我知道如果你需要:)

+0

這將刪除當前視圖並顯示底層視圖控制器。看看我的編輯,使其更清晰 – 2015-01-27 21:54:32

相關問題