gpt4 book ai didi

ios - 更新 TableView 上的所有单元格而不使操作太 "heavy"内存

转载 作者:行者123 更新时间:2023-11-28 15:02:45 24 4
gpt4 key购买 nike

我有一个带有 cellstable view,当执行左滑 Action 时它们可以显示一个复选标记(复选标记只是一个 UIView,哪个属性 isHidden 被设置为 true)。

我在另一个 view controller 上也有一个 UIButton,当用户点击它时,所有复选标记都应该被删除。我通过在委托(delegate)上使用协议(protocol)和 bool 计算属性来实现这一点。该属性从协议(protocol)中调用。

方法实现如下:

extension ItemsTableViewController: UncheckAllCheckedItemsDelegate {
func uncheckAllCheckedItemsButtonDidTapped() {
if checkedItems.count > 0 {
checkedItems.removeAll()
shouldShowCheckmarks = false
}
}

}

从属性的属性观察器 (didSet),我在 table view 上调用了 reloadData()

这是它的样子:

var shouldShowCheckmarks: Bool = false {
didSet {

tableView.reloadData()
}
}

我在 table view 的数据源方法 tableView(_:, cellForRawAt:) 中使用这个属性,如下所示:

 cell.checkMarkView.isHidden = !shouldShowCheckmarks

它工作正常,所有单元格都会更新(即使是那些当前不可见的单元格)。

现在,我不确定在内存使用方面更新所有 cells 是否是最好的方法。如果您知道执行此操作的更好方法,我将不胜感激。

最佳答案

您需要做的就是更新可见单元格的复选标记。幸运的是,UITableView 有一个属性可以帮助您调用visibleCells

而不是调用重新加载数据:

for cell in tableView.visibleCells {
// update the check mark for this cell
cell.checkMarkView.isHidden = !shouldShowCheckmarks
}

只要您更新了模型数据,您的不可见单元格就会在下次加载时做正确的事情。

关于ios - 更新 TableView 上的所有单元格而不使操作太 "heavy"内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com