我创建了一个方法,当用户想要删除一个单元格时更新我的 UITableView。
-(void)removeMoreFriendsRow:(NSNotification *)notification {
NSDictionary *d = [notification userInfo];
NSIndexPath *index = [d objectForKey:@"indexPath"];
[self.p_currentFriends removeObjectAtIndex:index.row];
[self.o_table deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationRight];
}
p_currentFriends 是一个 NSMutableArray,它包含 UITableView 打印的所有对象。
这个方法我用了一次很好用,但是用了多次就失效了。
似乎每次调用 deleteRowsAtIndexPaths 时 indexPath 都保持不变。
例如,
- 在第一次调用时,用户点击第二个单元格,indexPath = [0,1] 并删除正确的单元格,
- 在第二次调用时,用户点击第三个单元格并且 indexPath = [0,3] 而不是 [0,2]
我发现让它工作的唯一方法是使用 reloadData,但我想在单元格删除时有一个动画。
我该怎么做?
最佳答案
您所做的基本上是正确的,但您需要以某种方式重新加载 tableView
。如果您不想重新加载整个 tableView
,请使用它,它也会为您提供 animation
-
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:sectionNum];
[self.o_table reloadSections:indexSet
withRowAnimation:UITableViewRowAnimationFade];
关于objective-c - 使用 deleteRowsAtIndexPaths 后 indexPath 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346282/