我想记录我上次关闭的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")
}
答案 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
将其设为变量,并允许您对其进行修改