如何在编辑模式下获取UITableView Row的indexPath

时间:2014-02-06 16:46:36

标签: objective-c uitableview ios7 editmode

有没有办法让行处于编辑模式?

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

但是我该如何解决这个问题?

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

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

enter image description here

提前致谢。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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
        }
    }

}