【问题标题】:TableView DidSelectRowAt() latencyTableView DidSelectRowAt() 延迟
【发布时间】:2019-01-04 02:06:12
【问题描述】:

您好,我实际上在我的应用程序中使用了一个表格视图。我有这行代码可以从 VC 切换到母亲,并且在任何地方都可以正常工作:

 let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
self.present(vue, animated: true, completion: nil)

在我的 tableView 中,我使用函数 DidSelectRowAt(当我单击行/单元格时执行)来执行此操作(VC 切换) 但是当我点击它时你已经明白了,但是有延迟。 这种延迟有时是 1-2 秒,有时是 12 秒,它是随机的。这很奇怪。 我指定上面的功能可以立即与按钮和其他功能一起使用。 这是代码(我只写重要的东西):

class Horaire: ViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
        self.present(vue, animated: true, completion: nil)

}

和其他类:

class Accueil: ViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print("viewDidLoad executed")
    }
}

因此,当我单击 tableview 的一个单元格时,它会立即打印“viewDidLoad 已执行”,但 VC 切换仅在随机几秒钟后完成。 为什么我有这种延迟以及如何解决它?它不使用segue

【问题讨论】:

    标签: uitableview swift4.2


    【解决方案1】:

    我想到的第一件事就是将块放入主队列。我知道didSelectRowAt 应该在 UI 线程中运行,但我在互联网上看到了一些关于这件事的投诉。对我来说似乎是一个错误。

    class Horaire: ViewController, UITableViewDataSource, UITableViewDelegate {
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            DispatchQueue.main.async{
            let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
            self.present(vue, animated: true, completion: nil)
            }
        }
    }
    

    出于某种奇怪的原因,您可以看到这似乎对这些人有用: https://github.com/HeroTransitions/Hero/issues/79

    【讨论】:

    • 你把类和扩展混在一起了吗?
    • 我做了,我更改了一些代码以在我的计算机上测试,并忘记在答案中进行编辑。您可以将其改回class,或将其保留为扩展名并删除ViewController 位。我将对我的答案进行修改。我的错。
    • 你测试过这个,它有效吗?你能解释一下什么是队列吗?
    • 当您添加一些代码来填充表格时,它确实有效;您的课程中没有。
    • 所以我只需要添加 DisparchQueue.main.sync 就可以了?那是做什么的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多