【问题标题】:push viewController is not working while debugging in iOS在 iOS 中调试时推送 viewController 不起作用
【发布时间】:2019-07-19 22:47:19
【问题描述】:

有时,navigationController?.pushViewController 方法在调试时不起作用。我的初始控制器(自我)已经有了导航控制器。但是,我们在输出屏幕中看不到任何错误日志。你有没有遇到过这个问题?可能是内存问题?

 let controller = storyboard.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
 self.navigationController?.pushViewController(controller, animated: true)

环境:iOS 12、Xcode 10.1

问候,

【问题讨论】:

  • 取决于您在哪里执行此操作。你的 self.navigationController 在它不起作用的情况下是 nil 吗?
  • 你在哪里运行这段代码?可以分享一下吗
  • 在初始 ViewController 之前添加 NavigationController。它会起作用的。
  • 尝试将代码移入if let nav = self.navigationController {} else {//put some log} 的 if 中,并在遇到问题时查看是否有任何日志。由于您在self.navigationController 上使用选项检查?,因此当self.navigationController 为nil 时不会发生推送,并且不会抛出错误或异常。
  • 您是否在第一个控制器之前添加了导航控制器作为初始控制器?

标签: ios swift uinavigationcontroller pushviewcontroller


【解决方案1】:

试试

DispatchQueue.main.async {
 self.navigationController?.pushViewController(controller, animated: true)
}

【讨论】:

  • 如果调用是从不是主线程的线程进行的,则此建议有效。
【解决方案2】:
  1. 请确保您已将导航控制器设置为初始视图控制器

  1. 然后你可以使用这段代码在控制器之间移动

    let controller = storyboard.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
    self.navigationController?.pushViewController(controller, animated: true)
    
  2. 使用导航返回控制器

    self.navigationController?.popViewController(animated: true)
    self.dismiss(animated: true, completion: nil)
    
  3. 我希望这不是记忆问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2019-09-22
    相关资源
    最近更新 更多