如何存储对 UITableView 单元格中发生的用户交互 UIelements 的更改
How to store changes to user-interaction UIelements occurring within UITableView cells
我最近意识到,在使用 UITableView 时,我应该在实际单元格对象之外管理我的所有单元格数据(以便“保留”我的数据,因为单元格被重用)。然后,当我需要在我的 cellForRowAt
方法中为我的 tableview 提供一个单元格时,我只需将那个“持久化”数据设置到我重用的单元格中。
但是,我对如何在我的单元格中存储用户交互 UI 元素的更改特别感到困惑? (例如,如果 UILabel 的 alpha 值从默认值 1.0 更改为新值 0.5)
这里有几个可能的想法(我不认为这些想法是正确的,所以欢迎任何批评或建议):
在单元格的数据模型中完全复制单元格的每个 IBOutlet 变量(这意味着我将在 UITableViewCell 中有一个 UILabel,在我的 CellModel 中有一个持久副本)。然后我可以将这些整个变量复制回 cellForRowAt
方法中的单元格。但是,这似乎有点多余和浪费内存。
记录一下我的cell模型的具体变化。例如,如果 UILabel 的 alpha 值发生变化,只需记录该特定的新 alpha 值,而不是整个 UILabel。然而,我看到的 problem/confusion 似乎我可能只为一个元素记录了很多东西(如果不仅仅是特定元素的 alpha 变化)。我也对我应该如何实际实现这一点感到困惑(所以也许这比我想象的要容易得多?)。
感谢指导
ps。我用故事板
永远不会出现需要在单元格数据模型中存储 UITableViewCell
UI 变量状态的情况,您可以这样做,但强烈建议不要这样做。
通常您的 UI 状态(不仅是 UITableViewCell
s,任何 UI 元素)取决于它所代表的某些数据模型。因此,在您的情况下,单元格的数据模型可以有一个 boolean/enum 或其他任何表示单元格状态的东西,您可以根据它们的数据模型状态组成 UITableViewCell
。
我最近意识到,在使用 UITableView 时,我应该在实际单元格对象之外管理我的所有单元格数据(以便“保留”我的数据,因为单元格被重用)。然后,当我需要在我的 cellForRowAt
方法中为我的 tableview 提供一个单元格时,我只需将那个“持久化”数据设置到我重用的单元格中。
但是,我对如何在我的单元格中存储用户交互 UI 元素的更改特别感到困惑? (例如,如果 UILabel 的 alpha 值从默认值 1.0 更改为新值 0.5)
这里有几个可能的想法(我不认为这些想法是正确的,所以欢迎任何批评或建议):
在单元格的数据模型中完全复制单元格的每个 IBOutlet 变量(这意味着我将在 UITableViewCell 中有一个 UILabel,在我的 CellModel 中有一个持久副本)。然后我可以将这些整个变量复制回
cellForRowAt
方法中的单元格。但是,这似乎有点多余和浪费内存。记录一下我的cell模型的具体变化。例如,如果 UILabel 的 alpha 值发生变化,只需记录该特定的新 alpha 值,而不是整个 UILabel。然而,我看到的 problem/confusion 似乎我可能只为一个元素记录了很多东西(如果不仅仅是特定元素的 alpha 变化)。我也对我应该如何实际实现这一点感到困惑(所以也许这比我想象的要容易得多?)。
感谢指导
ps。我用故事板
永远不会出现需要在单元格数据模型中存储 UITableViewCell
UI 变量状态的情况,您可以这样做,但强烈建议不要这样做。
通常您的 UI 状态(不仅是 UITableViewCell
s,任何 UI 元素)取决于它所代表的某些数据模型。因此,在您的情况下,单元格的数据模型可以有一个 boolean/enum 或其他任何表示单元格状态的东西,您可以根据它们的数据模型状态组成 UITableViewCell
。