1

有没有办法获得处于编辑模式的行?

我知道我可以在这里买到- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

但是我该如何摆脱这种方法呢?

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];不起作用,因为它返回 NULL ...

当我的意思是编辑模式时,这意味着该行已向左移动并在右侧显示删除...

在此处输入图像描述

提前致谢。

4

2 回答 2

2

indexPathForSelectedRow不起作用,因为未选择该行。

定义一个属性来保存选择删除的当前行:

@property (nonatomic, strong) NSIndexPath *indexPathOfDeleteRow;

然后使用tableView:commitEditingStyle:forRowAtIndexPath更新属性:

- (void)  tableView:(UITableView *)tableView 
 commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
  forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
        self.indexPathOfDeleteRow = indexPath;
}
于 2014-02-06T17:00:57.987 回答
1

你可以使用这个UITableView扩展:

extension UITableView {

    var indexPathForEditingRow: NSIndexPath? {
        return indexPathsForEditingRows.first
    }

    var indexPathsForEditingRows: [NSIndexPath] {
        return visibleCells.flatMap { cell -> NSIndexPath? in
            guard let indexPath = indexPathForCell(cell) where cell.editingStyle != .None else {
                return nil
            }
            return indexPath
        }
    }

}
于 2015-09-28T13:57:52.277 回答