在Swift中,我应该如何从自定义视图中保存数据,以便在单元格出列时不会删除它?

时间:2015-01-20 01:21:30

标签: ios uitableview swift

我有一个自定义视图,它存在于tableview的单元格中。该视图称为bulletRow,它是一系列子弹,当用户点击它们时可以填充或清空。我的tableview中的每个单元格都包含一些bulletRows,我需要在用户点击它们时保存它们。我考虑过使用Core Data,但是当应用程序关闭时我不需要它们继续存在,当用户滚动到出列点时我只需要它存在。

现在是我的情况:bulletRows的默认状态是有5个点,所有这些都是空的。当用户点击它们时,它们就会被填满。但是,如果用户向下滚动,则会将其重置为空。如何保存bulletRows的状态?

bulletRows有一个名为numberOfFilledCircles的属性,可以随时设置该属性以更改已填充的圆圈数量。这一切都在Swift中完成。

2 个答案:

答案 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元素时,您应该向底层模型发送操作以更新其状态,并且当单元格出列时,您应该从相应的模型元素恢复复选框状态。