ios swift - 解除导航控制器的根视图控制器

时间:2016-03-15 03:32:27

标签: ios swift

我从主视图控制器的按钮单击打开导航控制器。

我以编程方式在导航控制器上创建了一个左栏按钮项目,我想解除导航控制器并返回主控制器。

我基本上回到了导航控制器的根视图控制器。

我已经尝试了

navigationController?.dismissViewControllerAnimated(true, completion: nil)

self.dismissViewControllerAnimated(true, completion: nil)

并在两者上获得NSException。

请指教。

6 个答案:

答案 0 :(得分:6)

斯威夫特3:

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

它将关闭所有呈现的视图控制器并保留根视图控制器。

答案 1 :(得分:4)

如果您推送您的ViewController,则应使用 pop ViewController堆栈中删除Navigation并登陆上一个ViewController试试这个 ...

self.navigationController?.popViewControllerAnimated(true);

SWIFT 3

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

答案 2 :(得分:0)

当您使用presentViewController(可能是导航堆栈的根视图控制器或独立视图控制器)显示viewController时,

dismissViewController工作。

答案 3 :(得分:0)

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

试试这个:)

答案 4 :(得分:0)

一年后..异常表示在添加左侧栏按钮时,您为操作参数提供的选择器有问题。

这样的事情应该有效:

创建栏按钮项目:

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

关闭根视图控制器:

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

答案 5 :(得分:0)

Apple Dev已经提供了非常简单的代码

self.navigationController?.popToRootViewController(animated: false)