【问题标题】:ios swift - dismiss root view controller of navigation controllerios swift - 关闭导航控制器的根视图控制器
【发布时间】:2016-03-15 03:32:27
【问题描述】:

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

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

我实际上是回到导航控制器的根视图控制器。

我试过了

navigationController?.dismissViewControllerAnimated(true, completion: nil)

self.dismissViewControllerAnimated(true, completion: nil)

并在两者上都获得 NSException。

请指教。

【问题讨论】:

  • 什么 NSException 你得到了什么?
  • 你是推送还是展示UIViewController
  • 可能是您在 rootViewController 本身上调用这些方法。顺便说一句,你得到了什么例外?
  • 听起来更像是一个用于展开 segues 的用例:stackoverflow.com/questions/12561735/…
  • 无法识别的选择器发送到实例 0x154da4960 2016-03-17 19:16:29.363 [605:192637] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[返回:] : 无法识别的选择器发送到实例 0x154da4960'

标签: ios swift


【解决方案1】:

斯威夫特 3:

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

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

【讨论】:

    【解决方案2】:

    如果你推送你的ViewController,你应该使用popViewControllerNavigation堆栈中删除,然后放在之前的ViewController上。 试试这个...

    self.navigationController?.popViewControllerAnimated(true);
    

    SWIFT 3

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

    【讨论】:

      【解决方案3】:

      dismissViewController 在您使用 presentViewController 显示 viewController 时起作用,它可能是导航堆栈的根视图控制器或独立视图控制器。

      【讨论】:

        【解决方案4】:
        self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
        

        试试这个:)

        【讨论】:

          【解决方案5】:

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

          这样的事情应该可以工作:

          创建条形按钮项:

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

          关闭根视图控制器:

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

          【讨论】:

            【解决方案6】:

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

            self.navigationController?.popToRootViewController(animated: false)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-12-26
              • 1970-01-01
              • 2020-05-30
              • 2020-03-30
              • 1970-01-01
              • 1970-01-01
              • 2018-11-09
              相关资源
              最近更新 更多