2014-10-29 50 views

回答

7

注意:我沒有足夠的信譽來評論您的問題,因此我必須對您的實施做出一些假設。

如果你試圖關閉細胞中tableView:commitEditingStyle:forRowAtIndexPath:你可以試試這個:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
     // remove delete button only after short delay 
     [self performSelector:@selector(hideDeleteButton:) withObject:nil afterDelay:0.1]; 
    } 
} 

- (void)hideDeleteButton:(id)obj 
{ 
    [self.tableView setEditing:NO animated:YES]; 
} 

之所以使用performSelector:withObject:afterDelay:Table View Programming Guide for iOS

注注:數據源不應該調用setEditing:animated:從其實現的tableView:commitEditingStyle:forRowAtIndexPath :.如果由於某種原因,它必須在延遲之後通過使用performSelector:withObject:afterDelay:方法來調用它。

所有這一切都在很大程度上受到以下的答案啓發: https://stackoverflow.com/a/22063692/2433921

+1

多擺弄之後,我發現,關鍵是要調用tableView.setEditing ()並在表格視圖中將編輯設置爲false。我以前在沒有工作的單元格上將編輯設置爲false。 – Sam 2014-10-30 05:06:28

+2

是的,這就是在Swift中使用'[self.tableView setEditing:NO animated:YES];'在Objective C或'self.tableView.setEditing(false,animated:true)'中的答案。對不起,最初我沒有注意到你在使用Swift – Georgi 2014-10-30 14:08:43