0

我最近意识到,在使用 UITableView 时,我应该在实际单元格对象之外管理所有单元格的数据(以“保留”我的数据,因为单元格被重用)。然后,当我需要在我的cellForRowAt方法中为我的 tableview 提供一个单元格时,我只需将“持久”数据设置为我重用的单元格。

但是,我对如何在我的单元格中存储用户交互 UI 元素的更改感到特别困惑?(例如,如果 UILabel 的 alpha 值从默认值 1.0 更改为新值 0.5)

以下是我有过的几个可能的想法(我不相信它们是正确的,所以欢迎任何批评或建议):

  1. 在单元格的数据模型中完全复制单元格的每个 IBOutlet 变量(这意味着我将在 UITableViewCell 中有一个 UILabel,在我的 CellModel 中有一个持久副本)。然后我可以将这些整个变量复制回cellForRowAt方法中的单元格。但是,这似乎有点多余和浪费内存。

  2. 只需记录我的细胞模型的具体变化。例如,如果 UILabel 的 alpha 值发生变化,只需记录该特定的新 alpha 值,而不是整个 UILabel。但是,我看到的问题/困惑是,我似乎可能只为一个元素记录了很多东西(如果不仅仅是特定元素的 alpha 变化)。我也对我应该如何实际实现这一点感到困惑(所以也许这比我想象的要容易得多?)。

欣赏指导

附言。我使用故事板

4

1 回答 1

2

在任何情况下都不应该需要将UITableViewCellUI 变量状态存储在单元数据模型中,您可以这样做,但非常不鼓励这样做。

通常你的 UI 状态(不仅仅是UITableViewCells,任何 UI 元素)取决于它所代表的一些数据模型。因此,在您的情况下,单元格的数据模型可能有一个布尔值/枚举或其他任何表示单元格状态的东西,您可以UITableViewCell根据它们的数据模型状态组成您的 's 。

于 2021-02-14T19:08:11.057 回答