问题记录 - 点击Cell弹提示框延迟

2019-11-23  本文已影响0人  岁变

需求:点击tableview的Cell需要弹出一个系统的提示框

问题: 发现提示框的出现会有延迟,但我没有任何延迟操作,这问题让我很是难受,排查了半天最后还是百度出了问题所在。

问题代码:

    //MARK: - 系统登出
    static func logOut() {
        //获取当前VC
        let vc = UIViewController.currentViewController()
        if vc == nil {
            return
        }
        //弹出提示框
        let alertVC = UIAlertController(title: "提示", message: "是否退出登录", preferredStyle: .alert)
        let sureAction = UIAlertAction(title: "确定", style: .default) { [unowned vc] (_) in
            MBProgressHUD.showTextHUD("已登出")
            UserDefaults.removeAll()
            DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
                vc?.navigationController?.popToRootViewController(animated: true)
            }
        }
        let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
        alertVC.addAction(sureAction)
        alertVC.addAction(cancelAction)
        vc?.present(alertVC, animated: true, completion: nil)
    }

这是一个退出的提示框,在tableViewCell的点击方法中弹出。

原因:cell的点击点击效果去除时就会出现这个问题。

self.selectionStyle = .none

当点击Cell时,UI的变化没有立刻的发生在主线程,而是经过一系列的操作之后在主线程刷新UI。

解决方法:

        DispatchQueue.main.async {
            vc?.present(alertVC, animated: true, completion: nil)
        }
上一篇下一篇

猜你喜欢

热点阅读