从UITableView
删除行并从NSUserDefaults更新数组的正确方法是什么?
在以下示例中,我从NSUserDefaults
读取数据并向UITableView
提供其内容,我还允许用户删除{{1}中的项目我不确定何时读取和写入UITableView
,因此只要删除一行,表就会更新。如您所见,我首先在NSUserDefaults
方法中读取数组并将其重新保存在viewDidLoad
方法中。使用此方法,删除行时,我的表不会重新加载。
commitEditingStyle
这通常如何处理?
由于
答案 0 :(得分:1)
基本上它是正确的,但是如果有东西被删除,你应该只保存用户默认值。
if editingStyle == UITableViewCellEditingStyle.Delete {
array.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(array, forKey: "myArrayKey")
}
不需要读取数组,不推荐使用。
在cellForRowAtIndexPath
重用单元格时,您需要在Interface Builder中指定标识符。
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
必须在类
的顶层声明数据源数组var array = [String]()
然后在viewDidLoad
中分配值并重新加载表视图。
override func viewDidLoad() {
super.viewDidLoad()
let userDefaults = NSUserDefaults.standardUserDefaults()
guard let data = userDefaults.objectForKey("myArrayKey") as? [String] else {
return
}
array = data
tableView.reloadData()
}