我向左滑动(正常方式)时有一个tableView和一个删除。当我点击删除按钮时,记录将从数据库中删除但不会形成视图。我想立即从桌子上删除它。为了看到记录被删除,我需要回到上一个视图并再次返回到tableView,然后记录就消失了。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
NewArt *currArt = [self.lN_Dep objectAtIndex:indexPath.row];
self.deptsub = [self.lN_Dep subarrayWithRange:NSMakeRange(indexPath.row, (self.lN_Dep.count - indexPath.row))];
self.selectedURL = [currArt.link absoluteString];
self.selected_ID = (NSString *)currArt.art_ID;
self.selectedArt = currArt;
NSArray *ArrayOfArtIDs_old = [ArtString componentsSeparatedByString:@","];
NSMutableArray *ArrayOfArtIDs_new = [[NSMutableArray alloc]init];
ArrayOfArIDs_new = [[NSMutableArray alloc] initWithArray:ArrayOfArtIDs_old];
for (NSString *item in ArrayOfArtIDs_old) {
if ([item isEqualToString:self.selected_ID]) {
[ArrayOfArtIDs_new removeObject:self.selected_ID];
NSString *updateArt = [self updatedArtIDs:ArrayOfArtIDs_new];
if ([updateArt isEqualToString:@"true"]) {
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[_lN_Dep removeObjectAtIndex:indexPath.row];
//[_lN_Dep removeObject:indexPath];
[self.tableView endUpdates];
}
}
}
[self bookMarkedFeed];
}
当我按下删除时,程序会中断,此行会突出显示。
[_lN_Dep removeObject:indexPath];
或
[_lN_Dep removeObjectAtIndex:indexPath.row];
答案 0 :(得分:1)
对不起,没有代表发表评论...... 最新的错误是因为您的NSArray不可变。 尝试:
NSMutableArray *temp = [NSMutableArray arrayWithArray:self.lN_Dep];
[temp removeObjectAtIndex:indexPath.row];
self.lN_Dep = [NSArray arrayWithArray:temp];
答案 1 :(得分:0)
使用以下行删除动画,
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
答案 2 :(得分:0)
使用建议删除行的代码:
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
您获得的错误是因为tableView数据源仍包含您已删除的行的记录。您需要从数组中删除该对象。我认为它将是:
[self.lN_Dep removeObjectAtIndex:indexPath.row];
答案 3 :(得分:0)
_lN_Dep
是NSArray
(_NSArrayI
- > _NSArrayI(mmutable)
是NSArray类集群的具体私有实现),因此它不支持任何删除方法。将其设为NSMutableArray
或将其复制到可变的临时数组中,删除其中的内容,将其分配回来(作为友好的副本)。