2016-03-15 215 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) 
相关问题