我最近意识到,在使用 UITableView 时,我应该在实际单元格对象之外管理所有单元格的数据(以“保留”我的数据,因为单元格被重用)。然后,当我需要在我的cellForRowAt方法中为我的 tableview 提供一个单元格时,我只需将“持久”数据设置为我重用的单元格。
但是,我对如何在我的单元格中存储用户交互 UI 元素的更改感到特别困惑?(例如,如果 UILabel 的 alpha 值从默认值 1.0 更改为新值 0.5)
以下是我有过的几个可能的想法(我不相信它们是正确的,所以欢迎任何批评或建议):
在单元格的数据模型中完全复制单元格的每个 IBOutlet 变量(这意味着我将在 UITableViewCell 中有一个 UILabel,在我的 CellModel 中有一个持久副本)。然后我可以将这些整个变量复制回
cellForRowAt方法中的单元格。但是,这似乎有点多余和浪费内存。只需记录我的细胞模型的具体变化。例如,如果 UILabel 的 alpha 值发生变化,只需记录该特定的新 alpha 值,而不是整个 UILabel。但是,我看到的问题/困惑是,我似乎可能只为一个元素记录了很多东西(如果不仅仅是特定元素的 alpha 变化)。我也对我应该如何实际实现这一点感到困惑(所以也许这比我想象的要容易得多?)。
欣赏指导
附言。我使用故事板