在自定义单元格中保存 uibutton 状态 Swift

Saving uibutton state in custom cell Swift

我有一个 custom cell 和两个 uibuttons。 单击其中一个按钮也会根据带有两个 uibuttons.

的自定义单元格追加行

单击按钮后,我将其 alpha 更改为 50%,并且布尔值 isPressed 设置为 true。所以下次用户按下按钮时,它会产生一个 alert view 错误。

问题是 - 每次我滚动 - 带有按钮的单元格 被重复使用 并且这两个规则应用混乱。

我浏览了堆栈中的答案,但没有看到任何对我有帮助的东西,尤其是在 swift 中。我知道可以创建一个数组,将其附加 booleanindexPath.rowcurrentTitle 对象 - 然后在滚动 tableview 时以某种方式使用此数组。但我不清楚实施情况。更困难的是我在一行中有两个按钮。

非常感谢有关该主题的任何帮助。

谢谢。

有很多关于 table 视图的教程。 Like here。您需要将数据模型(例如是否按下按钮)与视图(table 中的单元格和按钮)分开。如果这个想法不清楚,您将需要查找 MVC(模型视图控制器)或 MVVM(模型视图视图模型)。

想法是,您有一个记录,例如在一个数组中,记录您 table 中的所有项目应该是什么样子,无论它们是否在屏幕上。当你需要显示一个单元格时,你可以根据数组中的信息用它应该的状态覆盖它的当前状态(因为它正在被回收)。

在 objc 中实现的想法将如下所示:

  1. 创建一个大小等于单元格数的 NSArray。

  2. [NSNumber numberWithBOOL:NO] 之类的对象初始化它(或 YES 如果你需要按下状态)在你调用 [self.tableView reloadData];

  3. 之前
  4. 在方法cellForRowAtIndexPath中检查是否 [array[indexPath.row] boolValue] 为 YES 或 NO 并设置按钮的 状态。

希望对您有所帮助。