我正在使用 xCode 7 beta 和 Swift 来实现带有 MGSwipeTableCells 的 tableview。我这样做是因为我需要在每个单元格的左侧和右侧都有一个滑动按钮。这两个按钮都需要从表格视图中删除单元格。
在将按钮添加到单元格时,我尝试使用便捷回调方法来执行此操作:
// Layout table view cell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("newsFeedCell", forIndexPath: indexPath) as! NewsFeedCell
cell.layoutIfNeeded()
// Add a remove button to the cell
let removeButton = MGSwipeButton(title: "Remove", backgroundColor: color.removeButtonColor, callback: {
(sender: MGSwipeTableCell!) -> Bool in
// FIXME: UPDATE model
self.numberOfEvents--
self.tableView.deleteSections(NSIndexSet(index: indexPath.section), withRowAnimation: UITableViewRowAnimation.Fade)
return true
})
cell.leftButtons = [removeButton]
但是,一旦我删除了第一个单元格,所有索引都会被丢弃,回调现在会删除一个不正确的单元格。也就是说,如果我删除 cell_0,cell_1 现在将成为表中的第 0 个。但是,与 cell_1 关联的按钮的回调会删除索引为 1 的单元格,即使它现在实际上是表中的第 0 个单元格。
我尝试实现 MGSwipeTableCell 委托方法,但无济于事。在我的代码执行过程中,这些方法都没有被调用过。我应该如何解决这个问题?实施委托会解决这个问题吗?如果,那么可以提供一个例子吗?如果没有,您能否建议一种替代方法,让表格视图单元格两侧都有滑动按钮,可以删除所述单元格?