我有一个自定义视图,它存在于tableview的单元格中。该视图称为bulletRow,它是一系列子弹,当用户点击它们时可以填充或清空。我的tableview中的每个单元格都包含一些bulletRows,我需要在用户点击它们时保存它们。我考虑过使用Core Data,但是当应用程序关闭时我不需要它们继续存在,当用户滚动到出列点时我只需要它存在。
现在是我的情况:bulletRows的默认状态是有5个点,所有这些都是空的。当用户点击它们时,它们就会被填满。但是,如果用户向下滚动,则会将其重置为空。如何保存bulletRows的状态?
bulletRows有一个名为numberOfFilledCircles的属性,可以随时设置该属性以更改已填充的圆圈数量。这一切都在Swift中完成。
答案 0 :(得分:2)
通常,您应该使用某些内容(例如数组)来保存表的状态。表中的单元格应反映该状态,并在选中时更新该状态。
您可以从表视图控制器中的整数数组开始,如下所示:
var numberOfFilledCircles = [Int]()
通过从numberOfFilledCircles.count
方法返回numberOfRowsInSection
,使用数组中的项目数来确定要在表格中显示的行数。
您可以在viewDidLoad
中填充数组。如果您对行进行了硬编码,则可以对所需的行重复此语句:
numberOfFilledCircles.append(0)
数组中的每个Int
都包含表示填充了多少个圆的值(初始化为0)。
在cellForRowAtIndexPath
中,在构建单元格时使用数组中的相应值。例如,如果您的单元格中有UILabel
名为numberOfFilledCircles
,则可以执行以下操作:
cell.numberOfFilledCircles.text = String(numberOfFilledCircles[indexPath.row])
最后,在didSelectRowAtIndexPath
中,使用您要填写的圈数更新数组:
numberOfFilledCircles[indexPath.row] = //whatever you want
答案 1 :(得分:1)
这里的问题是UI不是模型。
当按下ui元素时,您应该向底层模型发送操作以更新其状态,并且当单元格出列时,您应该从相应的模型元素恢复复选框状态。