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

我有一个自定义视图存在于tableview中的单元格中。 该视图被称为bulletRow,它是一系列子弹,当用户点击它们时可以填充或清空。 我的tableview中的每个单元格都包含一些bulletRows,当用户点击它们时我需要保存它们。 我已经考虑过使用核心数据,但是当应用程序closures时,我不需要它们来坚持,只有在用户滚动过去出现点时才需要它。

这是我现在的情况:bulletRows的默认状态是有5个点,所有这些都是空的。 当用户点击它们时,它们变得充满。 如果用户向下滚动,则会重置为空。 我怎样才能保存子弹状态?

bulletRows有一个名为numberOfFilledCircles的属性,可以在任何时候设置来改变填充圆的数量。 这一切都是在Swift中完成的。

一般来说,你应该使用一些东西来保存你的表的状态。 表中的单元格应反映该状态,并在选中时更新该状态。

你可能会开始在你的表视图控制器中的整数数组,像这样:

var numberOfFilledCircles = [Int]() 

通过返回numberOfRowsInSection方法中的numberOfFilledCircles.count ,使用数组中的项数来确定在表中显示的行数。

你可以在viewDidLoad填充数组。 如果您对行进行了硬编码,则可以为所需的行数重复此语句:

 numberOfFilledCircles.append(0) 

数组中的每个Int都保存表示填充了多less个圆的值(初始化为0)。

在你的cellForRowAtIndexPath ,在构造你的单元格时使用你的数组中的适当值。 例如,如果你的单元格有一个叫做numberOfFilledCirclesUILabel ,你可以这样做:

 cell.numberOfFilledCircles.text = String(numberOfFilledCircles[indexPath.row]) 

最后,在你的didSelectRowAtIndexPath ,用你想填充的圆圈数来更新数组:

 numberOfFilledCircles[indexPath.row] = //whatever you want 

这里的问题是UI不是模型。

当按下UI元素时,您应该向底层模型发送一个动作来更新其状态,当单元格出列时,您应该从适当的模型元素中恢复checkbox状态。