ios - 您如何访问和保存集合视图中单个单元格的数据?
问题描述
我正在为投票应用程序构建原型。到目前为止,我有一个集合视图,其中每个单元格都包含一个人的姓名、描述和一个滑块,用于在一个视图控制器上选择一个值。在下一个视图控制器上,我有一个包含 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)
}
我无法完全弄清楚如何做我想做的事情。目前,代码仅显示上次更改的滑块的名称,这些滑块填充在所有三个单元格中。这显然是不正确的,应该为每个单元格显示三个不同的名称,而不是每个单元格中的同一个人。我的问题是,我将如何在视图控制器中保存来自三个不同单元格的信息?
解决方案
你的方法是错误的。您不应该使用集合视图/表格视图单元格来存储数据。曾经。
您应该使用单元格和其中的视图向用户显示信息,并收集用户的输入。用户更改值的那一刻(在文本字段中按回车键输入数据、点击按钮、更改滑块值等),您应该收集更改的值并将其保存到数据模型。对于集合视图和表视图,数组或数组数组通常是数据模型所需的全部内容。您定义一个描述单元格不同值的结构,然后创建这些结构的数组(用于简单的线性集合/表格视图)或数组数组(用于集合视图单元格的网格模式,或用于分段表格视图.)
如果您需要将数据传递给另一个视图控制器,您可以只传递数据模型对象。如果您需要持久化数据,请持久化数据模型对象(请注意,UserDefaults 是保存数据模型的错误选择。它旨在保存简单的设置,如用户首选项,而不是大型或复杂的结构。)
推荐阅读
- python - 没有名为“sklearn.linear_model.base”的模块
- python - python-igraph 文档不可用
- pytorch - 有什么方法可以将 .pt 转换为 pkl
- multithreading - 使用 openmp 和私有子句的梯形规则集成
- python - SQLAlchemy:选择一个表中不在另一个相关表中的所有记录
- r - 即时为 reactiveValues 创建变量名,然后访问它们的值?R闪亮
- node.js - 我的 DynamoDb 连接每次都会关闭吗?
- javascript - 有没有办法让这个动画从它停止的地方重新开始?(动漫.js)
- ios - 在 MessageKit 中 configureAvatarView 无法正常工作
- javascript - 原型继承:在哪里可以找到错误实例的消息属性?