2015-05-29 107 views
-1

我有一套視圖控制器VC1,VC2,VC3,VC4。 VC2有多個入口點,可以以模態方式呈現或推送到導航控制器上。如何解除視圖控制器鏈?

目前我在VC1。在某些行動中,我以模態方式呈現VC2。 VC2中的一些後續操作將我帶到VC3-> VC4。 VC4中有一個按鈕可以讓我回到VC1。

我該如何以簡單的方式實現?一種方法是通過代表實現它。但是,我需要將它設置在路徑上的每個視圖控制器中嗎?

回答

0

您可以使用下面的方法來實現這一從UINavigationController -

enter image description here

Apple's Doc Reference

+0

popToRootViewController/popToViewController已經在VC1實施。要調用它,VC4必須調用一些委託方法,如delegate.doneClicked()。那麼我需要從VC1-> VC2-> VC3-> VC4傳遞這個委託對象嗎? – gsrivast

+0

是你的rootViewController的VC1嗎?你可以使用你的AppDelegate來獲取navigationController。使用'UIApplication sharedApplication] .delegate'你可以從任何類中檢索你的AppDelegate實例。 –

0

我想沒有必要設置任何delegates.I根據您的問題,並取得了演示我找到一個解決方案。

比方說,你有3個視圖控制器模態打開。

A - 起始視圖控制器

A - > VC1

VC1 - > VC2

VC2 - > VC3

剛上按鈕抽頭寫這下面線。

self.presentingViewController?.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil) 

P.S:使用presentingViewController財產 你有很多視圖控制器。在我的情況下,我寫了3次,因爲我有模態 呈現3個視圖控制器。

+0

快速簡單的解決方案。唯一的缺點是臨時視圖控制器可能會閃爍。 – Vitalii

0

使用展開segues(如果您使用故事板)!

在蘋果文檔中閱讀它並在網上找到一些例子。你的場景對此非常完美。

@IBAction func backToVC1(segue: UIStoryboardSegue) { 

} 

然後在你最後的ViewController,從您的按鈕退出圖標控制拖動故事板的頂部:

在VC1的viewController(您想回到一個)將這個viewController並從彈出窗口中選擇backToVC1。

這將解僱viewcontrollers整個堆棧,帶你回到VC1

相關問題