【问题标题】:NavigationController Back button cause “Pushing the same view controller instance more than once is not supported”NavigationController 后退按钮导致“不支持多次推送同一个视图控制器实例”
【发布时间】:2020-08-30 17:26:47
【问题描述】:

此问题仅在 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】:

    如果控制器从内存中释放,这可能会发生。如果您将其创建为 var splitViewController: UIViewController! - 尝试改写为 var splitViewController: UIViewController?,并在每个调用中检查 nil,如

     guard let controller = self.splitViewController else {
          print("Controller does not exist") 
          return
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 2016-05-26
      • 2011-10-28
      • 2011-11-14
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      相关资源
      最近更新 更多