2016-03-15 163 views
2

我從我的主視圖控制器的按鈕單擊打開導航控制器。ios swift - 關閉導航控制器的根視圖控制器

我以編程方式在導航控制器上創建了一個左欄按鈕項,我想關閉導航控制器並返回到我的主控制器。

我基本上回到了導航控制器的根視圖控制器。

我已經試過

navigationController?.dismissViewControllerAnimated(true, completion: nil) 

self.dismissViewControllerAnimated(true, completion: nil) 

,對雙方得到一個NSException。

請指教。

+0

_What_ NSException你得到什麼? – matt

+0

你是否在推送或呈現'UIViewController'? –

+0

也許你正在'rootViewController'本身調用這些方法。你得到了什麼異常,BTW? – Suryakant

回答

0

當您使用presentViewController(也許是導航堆棧的根視圖控制器)或獨立視圖控制器顯示viewController時,dismissViewController可以工作。

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

試試這個:)

+0

我越來越上面顯示的異常與此。 – Walking

4

如果你是ViewController,你應該使用流行移除ViewControllerNavigation棧和土地上一ViewController試試這個 ...

self.navigationController?.popViewControllerAnimated(true); 

SWIFT 3

_ = navigationController?.popViewController(animated: true); 
0

一年後。該異常指示有什麼不對的,你提供的動作PARAM選擇,當添加左欄按鈕。

像這樣應該工作:

創建欄按鈕項:

let backBarButton = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.stop, target: self, action: #selector(dismissView)) 

駁回根視圖控制器:

func dismissView() { 
    self.dismiss(animated: true, completion: nil) 
} 
4

夫特3:

self.view.window!.rootViewController?.dismiss(animated: false, completion: nil) 

它將關閉所有呈現的視圖控制器並保持根視圖控制器。

0

蘋果開發已經提供了非常簡單的代碼,這是

self.navigationController?.popToRootViewController(animated: false) 
相關問題