我尝试创建一个UITablView扩展函数,在一段时间延迟后重新加载表,例如:
extension UITableView {
func reloadData(afterDelay delayTime: TimeInterval) -> Void {
self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
}
}
但是它向我显示错误:模糊地使用' reloadData'
它的正确解决方案是什么?
答案 0 :(得分:4)
重命名您的功能,因为它与UITableView的reloadData()
//---------
extension UITableView {
// Default delay time = 0.5 seconds
// Pass delay time interval, as a parameter argument
func reloadDataAfterDelay(delayTime: TimeInterval = 0.5) -> Void {
self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
}
}
答案 1 :(得分:2)
我会使用一个块来解决这个问题:
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) { [weak self] in
self?.tableView.reloadData()
}
答案 2 :(得分:1)
extension UITableView {
func reloadDataAfterDelay(delayTime: TimeInterval) -> Void {
let when = DispatchTime.now() + delayTime
DispatchQueue.main.asyncAfter(deadline: when) {
self.reloadData()
}
}
}
答案 3 :(得分:1)
试试这个:
extension UITableView {
func reloadDataWithDelay(delayTime: TimeInterval) -> Void {
let delayTime = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: delayTime) {
self.reloadData()
}
}
}