美文网首页iOS Developer
解决tableview点击cell反应延迟

解决tableview点击cell反应延迟

作者: revon | 来源:发表于2017-07-20 15:31 被阅读63次

    不知道这是不是苹果的一个bug,当cell的selectionStyle设置为none的时候,点击cell present(我这里是present出的alertController)一个视图的时候,会有不同时间的延迟,有时三四秒,有时十几秒,很难受
    解决方法1:
    设置cell的selectionStyle为下边的任意一种

    public enum UITableViewCellSelectionStyle : Int {
        case blue
        case gray
        @available(iOS 7.0, *)
        case `default`
    }
    

    但是我就是不想点击出现一个灰色或者蓝色的选中框,我还想点击不会延迟,网上有的说是这样, 在点击cell的方法里写上

        tableView.deselectRow(at: indexPath, animated: true)
    

    我试了一下,并没有用,依然还是延迟,网上搜到的方法,基本都是这两种(在这里顺便喷一下,很多帖子,基本都直接复制一个人的,不管有没有用,千篇一律,很难受)
    重点来了,解决方法,在点击cell方法里,这么写

    DispatchQueue.main.async {[weak self] in
                    //点击触发的操作
                    self?.alertDetail(title: "选择性别", array: ["女", "男"], currentlabel: cell.detailLabel)
                }
    

    这样,延迟什么的根本不存在
    或者你觉得这样操作写在closure里边,不爽,那就直接这样

                //点击触发的操作
                alertDetail(title: "选择性别", array: ["女", "男"], currentlabel: cell.detailLabel)
                DispatchQueue.main.async {
                    //这里边啥也不用写
                }
    

    延迟什么的也就依然不存在了,猜想可能是present这个操作,苹果是默认在了一个子线程中执行的,至于为什么苹果这么干,那就不清楚了。

    相关文章

      网友评论

        本文标题:解决tableview点击cell反应延迟

        本文链接:https://www.haomeiwen.com/subject/mgzdkxtx.html