NavigationController Back按钮原因 "不支持多次推送同一个视图控制器实例"

问题描述 投票:0回答:1

这个问题只发生在iPhone上.我有一个tableView,当我点击它时,它将显示详细页面.当我快速点击单元格,然后在详细屏幕的导航栏上点击 "返回 "时,应用程序崩溃.这种情况很少发生(10次使用中的1次或更少)。

编码。

class Coordinator {
   func rootViewController() -> UISplitViewController {
      let master = createMasterViewController()
      let detail = createDetailViewController()
      self.splitViewController = createSplitViewController(master, detail) 
      return self.splitViewController
   }
   ...
   func didSelectDetail() {
      let detail = createDetailViewController()
      self.splitViewController.showDetailViewController(detail, sender: nil)
   }
}

异常:

***由于未捕获的异常'NSInvalidArgumentException',原因:'正在推送同一个视图控制器实例()不止一次,这是不支持的,很可能是应用程序中的一个错误。

ios swift uinavigationcontroller
1个回答
0
投票

如果控制器从内存中释放,可能会发生这种情况。如果你把它创建为 var splitViewController: UIViewController! - 改写 var splitViewController: UIViewController?,并在每次调用中检查是否为nil,如

 guard let controller = self.splitViewController else {
      print("Controller does not exist") 
      return
}
© www.soinside.com 2019 - 2024. All rights reserved.