如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态

Posted

技术标签:

【中文标题】如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态【英文标题】:How to save the state of UITableViewCell accessory checkmark in Swift 3 【发布时间】:2017-03-18 03:50:22 【问题描述】:

我有一个表格视图,我希望用户从表格视图中只选择一项,然后我想在单元格中添加一个复选标记。同时,我也想让其他单元格上的勾号就这样消失了。用户一次只能选择一个。然后我想保存数据(最好使用UserDefaults)。我该怎么做?

【问题讨论】:

【参考方案1】:

创建一个 IndexPath 类型的类变量。在您的 cellForRowAt 方法中,仅当索引路径与类变量匹配时设置 .checkmark 附件类型,否则设置 .none 。在 didSelectRowAt 方法中更新所选变量的 indexPath 并重新加载 tableview

【讨论】:

我收到了这个错误,这里是代码和调试器输出的截图:dropbox.com/s/jlqucl40piso7e5/… 您不需要将 indexPath 保存在用户默认值中...您可以简单地创建一个类变量。在屏幕截图中,您将索引路径存储在用户默认值中...您要在用户默认值中保存哪些数据? 我想保存所选行的索引路径,这样当我刷新表格视图时,我可以从用户默认值中获取索引路径并根据该索引路径设置附件复选标记 而不是直接保存索引路径。在用户默认值中将 index path.row 保存为 int 并获取该 int,从中构造索引路径..您不能将索引路径类型直接保存到用户默认值中【参考方案2】:

你应该这样使用

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

    let sgp : UITableViewCell = tableView.cellForRow(at: indexPath)!
    sgp.accessoryType = .checkmark

【讨论】:

以上是关于如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 3 中保存带有顶部图像的相机照片

如何将 UIStepper 保存到 CoreData (swift 3)

如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态

Swift 3 Core Data - 如何同步保存上下文?

如何向基于文档的 Swift 3 应用程序添加简单的保存加载功能?

如何在swift 3中使用imageview嵌套标签