如何在集合视图中访问和保存单个单元格中的数据?

时间:2018-11-05 22:04:12

标签: ios swift uicollectionview

我正在为投票应用程序构建原型。到目前为止,我有一个集合视图,其中每个单元格包含一个人的姓名,描述和一个滑块,用于在一个视图控制器上选择一个值。在下一个视图控制器上,我有一个包含3个单元格的集合视图,这些单元格应该从上一个屏幕中填充。

我正在尝试使用UserDefaults保存前3个人(或单元格),以便可以在第二个视图控制器上显示它们。这是我目前拥有的代码:

@objc func sliderDidEndSliding(sender: UISlider) {
        var defaults = UserDefaults.standard
        array.append("\(nameLabel.text)")
        defaults.set(array, forKey: "SavedStringArray")

        let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
        print(myarray)
    }

我不太清楚该怎么做。当前,该代码仅显示在所有三个单元格中填充的最后一次更改的滑块的名称。这显然是不正确的,应该为每个单元显示三个不同的名称,而不是每个单元中的同一个人。我的问题是,我将如何保存视图控制器中三个不同单元中的信息?

1 个答案:

答案 0 :(得分:0)

您的方法是错误的。您不应使用集合视图/表视图单元格来存储数据。曾经

您应该使用单元格及其内部的视图向用户显示信息,并收集用户的输入。用户更改值的分钟(按文本字段中的return键输入数据,点击按钮,更改滑块值等),您应该收集更改后的值并将其保存到数据模型中。对于集合视图和表视图,数据模型通常只需要一个数组或一组数组即可。您定义一个描述单元格不同值的结构,然后创建这些结构的数组(用于简单的线性收集/表视图)或数组的数组(用于收集视图单元格的网格模式或分段表视图) )

如果需要将数据传递到另一个视图控制器,则只需传递数据模型对象。

如果需要保留数据,则可以保留数据模型对象(请注意,UserDefaults是保存数据模型的一个糟糕选择。它旨在保存简单的设置,例如用户首选项,而不是大型或复杂的结构。)