呈现页面时出现 UiNavigation 错误

Posted

技术标签:

【中文标题】呈现页面时出现 UiNavigation 错误【英文标题】:UiNavigation error when presenting a page 【发布时间】:2018-06-10 13:44:08 【问题描述】:

我正在编写 Swift 代码 在我的这部分代码中,它应该在选择表格中的单元格时打开一个视图控制器。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 


    let next = self.storyboard?.instantiateViewController(withIdentifier: "SVC")
    self.navigationController?.pushViewController(next!, animated: true)
    self.present(next!, animated: true, completion: nil)


返回错误!!

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'应用程序试图呈现 模态的主动控制器

当我运行它时它可以正常工作,但是当它打开特定的视图控制器时它会崩溃并且屏幕冻结

【问题讨论】:

【参考方案1】:

你应该使用这个

self.navigationController?.pushViewController(next!, animated: true)

或者这个

 self.present(next!, animated: true, completion: nil)

编辑:使用这个

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 

    let next = self.storyboard?.instantiateViewController(withIdentifier: "SVC")
    self.navigationController?.pushViewController(next!, animated: true) 

【讨论】:

第一个再次崩溃,第二个工作,但它没有显示所有导航控制器代表的后退按钮! 当你把第一个当崩溃说什么 您不能同时使用两者请附上您尝试的最后一个代码 覆盖 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) let next = self.storyboard?.instantiateViewController(withIdentifier: "SVC") self.navigationController?.pushViewController(next!, 动画: true) self.present(next!, 动画: true, 完成: nil) 你应该明白两者都做导航但第一个显示在 navigationController 这是唯一的区别,所以在 self.present 行再次显示会导致崩溃跨度>

以上是关于呈现页面时出现 UiNavigation 错误的主要内容,如果未能解决你的问题,请参考以下文章

调用 iOS Alert 时出现 UI 一致性错误

UINavigation 将同一视图控制器推送两次错误

将 Spring MVC 与 JSP 页面一起使用时出现错误 500

呈现 UIAlertController 时出现 CGContext 错误

呈现窗口时出现 Gtkmm 分段错误

在 Node js 应用程序 + MongoDb 中加载数据时出现错误