从UITableView swift中删除行和部分

时间:2015-07-27 20:35:12

标签: swift tableview rows

我正在尝试滑动以从我的tableview中删除单元格,每次尝试这样做时都会出错。

这是我实际删除的代码

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == .Delete {
        // Delete the row from the data source
        self.tableView.beginUpdates()
        self.feedData.removeObjectAtIndex(indexPath.row) // also remove an array object if exists.
        self.tableView.deleteRowsAtIndexPaths(NSArray(object: NSIndexPath(forRow: indexPath.row, inSection: 1)) as [AnyObject], withRowAnimation: UITableViewRowAnimation.Left)
       // self.tableView.deleteRowsAtIndexPaths(NSArray(object: NSIndexPath(forRow: indexPath.row, inSection: 1)) as [AnyObject], withRowAnimation: UITableViewRowAnimation.Left)
        self.tableView.endUpdates()
    } else if editingStyle == .Insert {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }    
}

这就是我在我的章节中回归的内容

 override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1
}

我是初学者所以忍受我:)

1 个答案:

答案 0 :(得分:1)

您需要使用以下两个函数来处理滑动删除:

func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
   return true
}

func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
   if (editingStyle == .Delete) {
    // handle delete (by removing the data from your array and updating the tableview)

    self.tableView.beginUpdates()

    self.feedData.removeObjectAtIndex(indexPath.row) // also remove an array object if exists.
    self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Left)

    self.tableView.endUpdates()
}

根据Apple的功能tableView(_:canEditRowAtIndexPath:)

  

允许数据源排除将各行视为可编辑行。可编辑行在其单元格中显示插入或删除控件。如果未实现此方法,则假定所有行都是可编辑的。不可编辑的行忽略UITableViewCell对象的editingStyle属性,并且不对删除或插入控件进行缩进。可编辑但不希望显示插入或删除控件的行可以从UITableViewCellEditingStyleNone委托方法返回tableView:editingStyleForRowAtIndexPath:

我希望这对你有所帮助。