gpt4 book ai didi

ios - TableView 在删除时不选择新行

转载 作者:行者123 更新时间:2023-11-29 04:03:19 25 4
gpt4 key购买 nike

当我删除 tableView 中的一行时,我希望选择其上方的行。这不会发生...

代码如下:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
if (indexPath.section == 0) {
Formula *toDelete = (Formula *)[self.userFRMList objectAtIndex:indexPath.row];
NSManagedObjectContext *context = (NSManagedObjectContext *)[(PSAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSError *error = nil;
[context deleteObject:toDelete];
[context save:&error];
[self updateDataSource];
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
if ([self.userFRMList count] != 0) {

if (indexPath.row == 0) {
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone];
self.crtFormula = [self.userFRMList objectAtIndex:0];
[self.delegate theFormulaIs:self.crtFormula];

} else {
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section] animated:YES scrollPosition:UITableViewScrollPositionNone];
self.crtFormula = [self.userFRMList objectAtIndex:indexPath.row - 1];
[self.delegate theFormulaIs:self.crtFormula];

}
}else {
self.crtFormula = nil;
[self.delegate showBlank];
}
[tableView endUpdates];
}

}

}

最佳答案

至少,选择部分需要位于更新 block 之外!将其放在 endUpdates 调用之后。

如果这不起作用,请更进一步:尝试使用延迟性能执行选择部分(例如 dispatch_after)。现在,您正在尝试执行选择,而我们仍在响应 commitEditingStyle - 我们甚至还没有删除该行。延迟的性能让界面在删除后稳定下来。

您将需要使用与删除后的情况相对应的索引编号。

关于ios - TableView 在删除时不选择新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15589852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com