【问题标题】:Let the tableView delete swipe delete items from NSUserDefaults - How to bring these two functions together?让 tableView 从 NSUserDefaults 中删除滑动删除项目 - 如何将这两个功能结合在一起?
【发布时间】:2015-01-28 20:05:51
【问题描述】:

我想让我的应用程序的用户通过在单元格上向左滑动并按“删除”从 tableView 中删除 NSUserDefaults 中的项目。我知道这两个功能,但我不知道如何将它们放在右边,以便“删除滑动”影响 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()

}

【问题讨论】:

    标签: ios xcode uitableview swift nsuserdefaults


    【解决方案1】:

    首先,让我们将 mutableItemList 更改为一个实例变量,我们将使用它作为表的数据源。或者,您可以创建一个新的实例变量并进行相应的设置。

    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()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多