如何从UIAlertController中删除延迟?

时间:2017-01-09 05:18:43

标签: ios swift uitableview uialertcontroller

点击表格单元格后,我将显示4到5秒的延迟,以显示警报视图。以下是代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){

let cell = tableView.cellForRow(at: indexPath)!
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .alert)

let ok = UIAlertAction(title: "Ok", style: .default, handler: { (action) -> Void in
    let cell = tableView.cellForRow(at: indexPath)!
    })
let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: { (action) -> Void in
})
   alertController.addAction(ok)
   alertController.addAction(cancel)

present(alertController, animated: true, completion: nil)
}

如何避免这种延迟?

2 个答案:

答案 0 :(得分:13)

当我们处理UI时,重要的是它必须在主要步骤上完成。 因此,只需复制显示警报的代码并粘贴到调度主线程块中。

DispatchQueue.main.async {
   let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .alert)

let ok = UIAlertAction(title: "Ok", style: .default, handler: { (action) -> Void in
    let cell = tableView.cellForRow(at: indexPath)!
    })
let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: { (action) -> Void in
})
   alertController.addAction(ok)
   alertController.addAction(cancel)

present(alertController, animated: true, completion: nil)
}

答案 1 :(得分:0)

在主队列中编写代码以呈现UIAlertViewController。

DispatchQueue.main.async {
   //Write your code here.
}