在Swift中保存UITableViewCell选中标记选择

时间:2015-06-16 20:36:01

标签: swift uitableview

我正在尝试使用类似于“设置”中的UITableViewController来构建一个选择界面 - >一般 - >自动锁定,并且能够使复选标记工作,但我似乎无法弄清楚当再次调用视图时如何在先前选择的单元格上显示复选标记。

这是我到目前为止选中复选标记的代码:

var lastSelectedIndexPath: NSIndexPath?

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.selectedDistance = distances[indexPath.row]
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    if indexPath.row != lastSelectedIndexPath?.row {
        if let lastSelectedIndexPath = lastSelectedIndexPath {
            let oldCell = tableView.cellForRowAtIndexPath(lastSelectedIndexPath)
            oldCell?.accessoryType = .None
        }

        let newCell = tableView.cellForRowAtIndexPath(indexPath)
        newCell?.accessoryType = .Checkmark

        lastSelectedIndexPath = indexPath
    }
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("DataCell") as UITableViewCell
    cell.accessoryType = (lastSelectedIndexPath?.row == indexPath.row) ? .Checkmark : .None
    let distance = distances[indexPath.row]
    cell.textLabel?.text = distance.0
    cell.detailTextLabel?.text = "\(distance.1)"

    return cell

}

我想我可能要将lastSelectedIndexPath存储在另一个文件中,但我不知道从哪里开始。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

是的,你在这里回答了自己的问题。你需要存储lastSelectedIndexPath一些方法(即你用于持久性的任何东西)。如果您没有设置任何类型的数据库,那么执行此操作的一种简单方法(阅读:不是最好的方法)是使用NSUserDefaults存储它。