iOS Developer

解决tableview点击cell反应延迟

2017-07-20  本文已影响63人  revon

不知道这是不是苹果的一个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这个操作,苹果是默认在了一个子线程中执行的,至于为什么苹果这么干,那就不清楚了。

上一篇下一篇

猜你喜欢

热点阅读