【问题标题】:Slow performSegue in tableview didSelectRowAtIndexPath - iOS12tableview didSelectRowAtIndexPath 中的缓慢 performSegue - iOS12
【发布时间】:2018-10-15 15:54:15
【问题描述】:

有人经历过吗?我不是 100% 确定这是与 iOS12 相关的,但在 didSelectRowAtIndexPath 中调用 performSegue 会有 1-2 秒的延迟。

我已经尝试了其他地方发现的不同方法,例如将其带到主线程,但没有任何效果。不确定这是否是一个错误,但我还没有看到有人在网上谈论它。

【问题讨论】:

  • 这种情况是否也发生在设备上或只是模拟器上?
  • 另外,你为什么认为这是 iOS 12 的问题?你是说 iOS 11 没有这个问题吗?
  • 好的,iOS12(device) iOS11(simulator) 都发生在 (iPhone7Plus) 上。
  • 如果你能把didSelectRowAtIndexPath方法代码放在你的问题中帮助我们理解就更好了。

标签: swift uitableview segue ios12


【解决方案1】:

在主线程中尝试你的代码:

DispatchQueue.main.async{
    self.performSegue(withIdentifier: "YourSegueName", sender: self)
}

这对我有用,因为有时我们无法获得主线程,如果您正在处理一些 UI 内容,这很重要。

【讨论】:

    【解决方案2】:

    你使用的是 prepare 方法吗?如果是这样,你在 Segue 之前在做什么?

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "ExampleSegue" {
            let ChangeVC = segue.destination as! ExampleViewController
            ...
        }   
    }
    

    您是否尝试将所选 Row 的索引路径移交给不同的 ViewController?并决定在那里做什么?

    【讨论】:

    • 一点也不。这是一个直接的performSegue。不向其他 VC 传递任何信息。这就是为什么我觉得它很奇怪。
    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多