让 tableView 从 NSUserDefaults 中删除滑动删除项目 - 如何将这两个功能结合在一起?
Let the tableView delete swipe delete items from NSUserDefaults - How to bring these two functions together?
我想让我的应用程序的用户通过在 Cell 上向左滑动并按 "delete" 从 tableView 的 NSUserDefaults 中删除项目。我知道这两个函数,但我不知道如何将它们放在一起,以便 "remove swipe" 影响 NSUserDefaults 中的变量。也许有人可以帮助我。谢谢
此函数应允许用户访问 tableView 中的删除按钮:
func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
return true
}
func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
if (editingStyle == UITableViewCellEditingStyle.Delete)
}
并且该函数应该从 NSUserDefaults 中删除项目:
@IBAction func deleteItem(sender: AnyObject) {
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var itemListArray:NSMutableArray = userDefaults.objectForKey("itemList") as NSMutableArray
var mutableItemList:NSMutableArray = NSMutableArray()
for dict:AnyObject in itemListArray{
mutableItemList.addObject(dict as NSDictionary)
}
mutableItemList.removeObject(toDoData)
userDefaults.removeObjectForKey("itemList")
userDefaults.setObject(mutableItemList, forKey: "itemList")
userDefaults.synchronize()
}
首先,让我们将 mutableItemList 更改为一个实例变量,我们将使用它作为 table 的数据源。或者,您可以创建一个新的实例变量并相应地设置它。
var mutableItemList: NSMutableArray!
然后,要删除我们调用 deleteItem
函数。
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// Delete the row from the data source
self.deleteItem(mutableItemList[indexPath.row])
// show fancy fade animation to remove the cell from the table view
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
您还可以简化 deleteItem
函数。您不需要重建数组并从 NSUserDefaults
中删除对象。您可以只删除该对象,然后设置更新的数组,这将覆盖那里的任何内容。
func deleteItem(sender: AnyObject) {
mutableItemList.removeObject(sender)
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(mutableItemList, forKey: "itemList")
userDefaults.synchronize()
}
我想让我的应用程序的用户通过在 Cell 上向左滑动并按 "delete" 从 tableView 的 NSUserDefaults 中删除项目。我知道这两个函数,但我不知道如何将它们放在一起,以便 "remove swipe" 影响 NSUserDefaults 中的变量。也许有人可以帮助我。谢谢
此函数应允许用户访问 tableView 中的删除按钮:
func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
return true
}
func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
if (editingStyle == UITableViewCellEditingStyle.Delete)
}
并且该函数应该从 NSUserDefaults 中删除项目:
@IBAction func deleteItem(sender: AnyObject) {
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var itemListArray:NSMutableArray = userDefaults.objectForKey("itemList") as NSMutableArray
var mutableItemList:NSMutableArray = NSMutableArray()
for dict:AnyObject in itemListArray{
mutableItemList.addObject(dict as NSDictionary)
}
mutableItemList.removeObject(toDoData)
userDefaults.removeObjectForKey("itemList")
userDefaults.setObject(mutableItemList, forKey: "itemList")
userDefaults.synchronize()
}
首先,让我们将 mutableItemList 更改为一个实例变量,我们将使用它作为 table 的数据源。或者,您可以创建一个新的实例变量并相应地设置它。
var mutableItemList: NSMutableArray!
然后,要删除我们调用 deleteItem
函数。
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// Delete the row from the data source
self.deleteItem(mutableItemList[indexPath.row])
// show fancy fade animation to remove the cell from the table view
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
您还可以简化 deleteItem
函数。您不需要重建数组并从 NSUserDefaults
中删除对象。您可以只删除该对象,然后设置更新的数组,这将覆盖那里的任何内容。
func deleteItem(sender: AnyObject) {
mutableItemList.removeObject(sender)
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(mutableItemList, forKey: "itemList")
userDefaults.synchronize()
}