如何正确关闭modal呈现的控制器

时间:2016-09-23 11:02:27

标签: ios swift uinavigationcontroller

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

示例:

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

然后使用模态转换打开一个navigationController。 NC然后有一些视图控制器,它们上都有关闭按钮,当我点击它时,它关闭NC使用:

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

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

Unbalanced calls to begin/end appearance transitions for

并且打开的视图上的viewWillAppear也没有被调用。所以,任何人都可以告诉我,我是否正确关闭NC或是否有其他方法可以防止错误。

EDIT1: 改变了结束电话     controller.navigationController?.dismiss(animated:true,completion:nil)

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

也累了:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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