在我的uitableview中,當用戶設置編輯模式並嘗試刪除一行時,我會做一些驗證以檢查該行是否可以刪除。如果不是,我想將行重置爲之前的狀態,即沒有右側的刪除按鈕,而只是左側的負水平按鈕。uitableview重置刪除按鈕
我將使用哪種方法來完成上述操作?
在我的uitableview中,當用戶設置編輯模式並嘗試刪除一行時,我會做一些驗證以檢查該行是否可以刪除。如果不是,我想將行重置爲之前的狀態,即沒有右側的刪除按鈕,而只是左側的負水平按鈕。uitableview重置刪除按鈕
我將使用哪種方法來完成上述操作?
試試這個代碼,
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if(fails)
{
[self.tableView reloadData];
[super setEditing:YES animated:YES];
[self.tableView setEditing:YES animated:YES];
}
KingofBliss的回答會完成這項工作,然而,這是一個更具體一點。這種方法將動態重置刪除確認,並實質上「點擊」刪除編輯控件(重置確認的操作)。
UITableViewCell *cell = [self.detailsTableView cellForRowAtIndexPath:indexPath];
[cell.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger index, BOOL *stop){
if([subview isKindOfClass:NSClassFromString(@"UITableViewCellEditControl")])
{
UIControl *editControl = (UIControl *)subview;
[editControl sendActionsForControlEvents:UIControlEventTouchUpInside];
}
}];
這將重置您需要重置的單元格。
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(fails)
{
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}