【问题标题】:How to correctly close modal presented controller如何正确关闭模态呈现的控制器
【发布时间】:2016-09-23 11:02:27
【问题描述】:

我正在使用故事板中的直接导航 segue 或从代码中调用 segue 打开一个 navigationController,但仍然在故事板上创建。

例子:

 self.performSegue(withIdentifier: "addNew", sender: nil)

然后通过模态转换打开一个导航控制器。然后 NC 有几个视图控制器,它们上面都有关闭按钮,当我点击它时,它会使用以下方法关闭 NC:

self.navigationController?.dismiss(animated: true, completion: nil)

但之后当我在 TabbarController 上的不同 ViewController 之间切换或使用推送视图打开其他视图时,我得到:

Unbalanced calls to begin/end appearance transitions for

而且打开视图上的 viewWillAppear 也不会被调用。所以谁能告诉我我是否正确关闭了 NC 或者是否有其他方法可以防止错误。

编辑1: 将结束通话从 controller.navigationController?.dismiss(animated: true, completion: nil)

到 self.navigationController?.dismiss(animated: true, completion: nil) 只是为了让问题更容易。

也累了:

self.dismiss(animated: true, completion:nil)

编辑2: 从 UITabbarController 上的 NC 上的 VC 打开一个 NC 是不是很糟糕,或者将 NavigationControllers 作为 TabbarController 上的选项卡已经很糟糕了?

【问题讨论】:

标签: ios swift uinavigationcontroller


【解决方案1】:

您可能需要从控制器一侧关闭控制器:

// place this to the target controller, which handles you that modal view
self.dismiss(animated: true) {
    //completion:
}

self.dismiss(animated: true, completion:nil)

【讨论】:

  • 有了这条线,我可以更快地解决问题,但感谢您的建议
  • 那么,你把那条线放在哪里了?用什么方法?
  • 我替换了 self.navigationController?.dismiss(animated: true, completion: nil)
  • 但是在哪里,用什么方法? :) 我问的是方法,你把建议的行放在哪里。
  • 在从导航栏中的按钮调用的方法中。方法写在当前在 NC 最上面的控制器上
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多