在我的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];
}
}