iOS - 延迟后 UITableView 重新加载数据
iOS - UITableView reloadData after delay
我正在尝试创建一个 UITablView 扩展函数以在一段时间延迟后重新加载 table,例如:
extension UITableView {
func reloadData(afterDelay delayTime: TimeInterval) -> Void {
self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
}
}
但它向我显示错误:'reloadData'
的使用不明确
它的正确解法是什么?
这是带有错误消息的快照
重命名您的函数,因为它与 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)
}
}
我会使用块来解决这个问题,就像这样:
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) { [weak self] in
self?.tableView.reloadData()
}
extension UITableView {
func reloadDataAfterDelay(delayTime: TimeInterval) -> Void {
let when = DispatchTime.now() + delayTime
DispatchQueue.main.asyncAfter(deadline: when) {
self.reloadData()
}
}
}
试试这个:
extension UITableView {
func reloadDataWithDelay(delayTime: TimeInterval) -> Void {
let delayTime = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: delayTime) {
self.reloadData()
}
}
}
我正在尝试创建一个 UITablView 扩展函数以在一段时间延迟后重新加载 table,例如:
extension UITableView {
func reloadData(afterDelay delayTime: TimeInterval) -> Void {
self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
}
}
但它向我显示错误:'reloadData'
的使用不明确它的正确解法是什么?
这是带有错误消息的快照
重命名您的函数,因为它与 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)
}
}
我会使用块来解决这个问题,就像这样:
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) { [weak self] in
self?.tableView.reloadData()
}
extension UITableView {
func reloadDataAfterDelay(delayTime: TimeInterval) -> Void {
let when = DispatchTime.now() + delayTime
DispatchQueue.main.asyncAfter(deadline: when) {
self.reloadData()
}
}
}
试试这个:
extension UITableView {
func reloadDataWithDelay(delayTime: TimeInterval) -> Void {
let delayTime = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: delayTime) {
self.reloadData()
}
}
}