2014-02-06 127 views
1

有沒有辦法獲得處於編輯模式的行?如何在編輯模式下獲得UITableView行的indexPath

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

,但我怎麼把它弄出來這個方法的一面呢?

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];因爲它返回NULL不工作...

當我的意思是編輯模式,這意味着該行已經轉移到左側,並顯示在刪除右邊...

enter image description here

在此先感謝。

回答

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

不錯,簡單。優秀。謝謝 –

+0

不需要專門的財產。查看下面的答案。 –

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

} 
相關問題