Ios 更新表视图上的所有单元格,而不使操作对内存来说太“繁重”
我有一个带有单元格的表视图,当执行左扫操作时,它们可以显示一个复选标记。复选标记只是一个UIView,其属性isHidden设置为true 我在另一个视图控制器上也有一个UIButton,当用户点击它时,所有的复选标记都应该被删除。我通过在委托上使用协议和bool computed属性来实现这一点。该属性是从协议中调用的 以下是方法实现:Ios 更新表视图上的所有单元格,而不使操作对内存来说太“繁重”,ios,swift,uitableview,protocols,Ios,Swift,Uitableview,Protocols,我有一个带有单元格的表视图,当执行左扫操作时,它们可以显示一个复选标记。复选标记只是一个UIView,其属性isHidden设置为true 我在另一个视图控制器上也有一个UIButton,当用户点击它时,所有的复选标记都应该被删除。我通过在委托上使用协议和bool computed属性来实现这一点。该属性是从协议中调用的 以下是方法实现: extension ItemsTableViewController: UncheckAllCheckedItemsDelegate { func unche
extension ItemsTableViewController: UncheckAllCheckedItemsDelegate {
func uncheckAllCheckedItemsButtonDidTapped() {
if checkedItems.count > 0 {
checkedItems.removeAll()
shouldShowCheckmarks = false
}
}
}
在属性didSet的属性观察器中,我在表视图上调用reloadData
下面是它的样子:
var shouldShowCheckmarks: Bool = false {
didSet {
tableView.reloadData()
}
}
我在table view的数据源方法tableView_u1;:,cellForRawAt:中使用此属性,如下所示:
cell.checkMarkView.isHidden = !shouldShowCheckmarks
它工作正常,所有单元格都会得到更新,即使是那些当前不可见的单元格
现在,我不确定这是否是在内存使用方面更新所有单元格的最佳方式。如果您知道更好的方法,我将非常感谢您的帮助。您需要做的就是更新可见单元格的复选标记。幸运的是,UITableView有一个属性可以帮助您调用visibleCells 不调用重新加载数据:
for cell in tableView.visibleCells {
// update the check mark for this cell
cell.checkMarkView.isHidden = !shouldShowCheckmarks
}
只要您已经更新了模型数据,您的不可见单元格在下次加载时就会做正确的事情。Show。你的密码你问我们你在做什么是否正常,但你没有告诉我们你在做什么。我们应该只是猜测吗?@matt,我已经更新了我的问题是的,这绝对是一个更好的解决方案。谢谢你的帮助