将didSelectRowAt保存在Tableview上

时间:2019-04-25 07:58:33

标签: swift

我想记录我上次关闭的didselectrowat。我想用userdefaults保存我选择的didselectrowat。尝试将数据分配给indexpath时,出现错误“无法分配给值:'indexPath'是'let'常量'。如何存储indexpath?

 var savedata: IndexPath?

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
       super.tableView(tableView, didSelectRowAt: indexPath)
   // tableView.deselectRow(at: indexPath, animated: true)
    print("deselectRow", indexPath)
    let save11 = UserDefaults.standard.integer(forKey: "deselectRow")
    savedata = IndexPath(row: save11, section: 0)


    tableView.selectRow(at: savedata, animated: true, scrollPosition: .middle)


    if indexPath == [3,0] {
    UserDefaults.standard.set(60, forKey: "seconds")
        UserDefaults.standard.set(0, forKey: "deselectRow")

        }
     if indexPath == [3,1] {
        UserDefaults.standard.set(900, forKey: "seconds")
        UserDefaults.standard.set(1, forKey: "deselectRow")

    }

2 个答案:

答案 0 :(得分:1)

更改indexPath参数毫无用处,因为它根本没有效果。

要选择另一行,您必须调用selectRow(at:animated:scrollPosition:)

didSelectRowAt中调用super是非强制性的

var savedata: IndexPath?

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let save11 = UserDefaults.standard.integer(forKey: "deselectRow")
    savedata = IndexPath(row: save11, section: 0)

    tableView.selectRow(at: savedata, animated: true, scrollPosition: .middle)

    if indexPath.row == 3 {
        UserDefaults.standard.set(60, forKey: "deselectRow")
    }

答案 1 :(得分:0)

迅速地,let是一个常数。使用var将其设为变量,并允许您对其进行修改