Gus*_*tav 2 xcode uitableview tableview ios swift
我正在尝试刷新 UITableViewCell 中的标签,而不必刷新整个表格。这是为了制作一个计时器应用程序,我将每秒刷新 UITableView 中的标签(当它倒计时时)。
过去,我尝试过每秒重新加载整个 UITableView 的数据五次,但这导致滑动删除非常不一致且难以执行。我还没有成功更新单个行,所以我不知道这是否是一个可能的解决方案。
我找不到任何类似的问题,但是如果您知道之前有人问过它,请重定向我。
任何帮助将不胜感激!谢谢!
Swift 中最有效的方法是回调闭包。它导致的开销比协议/委托或通知少得多。
在模型中声明一个回调属性
var updateLabel : ((String) -> Void)?
Run Code Online (Sandbox Code Playgroud)
并在计时器触发时调用它
@objc func timerDidFire(_ sender: Timer) {
updateLabel?("New Value") // replace "New Value" with the actual value
}
Run Code Online (Sandbox Code Playgroud)在cellForRowAt为updateLabel属性分配闭包以更新标签
let model = datasourceArray[indexPath.row]
model.updateLabel = { value in
cell.textLabel.text = value
}
Run Code Online (Sandbox Code Playgroud)在tableView:didEndDisplaying:forRowAt:删除关闭
let model = datasourceArray[indexPath.row]
model.updateLabel = nil
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |