didEndEditingRowAtIndexPath with nil indexPath

在UITableViewController中,經過滑動刪除按鈕刪除一行,首先收到Table view data source call:oop

tableView:commitEditingStyle:forRowAtIndexPath

在這個調用中,須要首先刪除數據,再刪除界面上該行:spa

NSMutableArray * mutable = [self.options mutableCopy];
[mutable removeObjectAtIndex:indexPath.row];
self.options = mutable;
        
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

在刪除行的時候,會調用另外一個Table view delegate call:code

tableView:didEndEditingRowAtIndexPath:

indexPath參數指向的就是剛刪除的cell的位置。因而我在這裏作了一些其它刷新操做。blog

 

接着,意向不到的事情發生了,UITableViewController又一次調用了Table view delegate:rem

tableView:didEndEditingRowAtIndexPath:

此時傳輸的indexPath參數爲——nilget

我尚未在SDK中找到關於後一個調用的做用的描述,爲避免重複操做,我只在這裏調用了刷新操做:it

if (indexPath == nil) {
    NSTimer * timer = [NSTimer timerWithTimeInterval:.5f target:self selector:@selector(reload:) userInfo:nil repeats:NO];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}
相關文章
相關標籤/搜索