objective-c - 使用 deleteRowsAtIndexPaths 后 indexPath 未更新

标签 objective-c uitableview

我创建了一个方法,当用户想要删除一个单元格时更新我的​​ 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/

相关文章:

iphone - UIScrollView 上的 setContentOffset 正确方法

ios - 在后台接收推送通知并在用户不知情的情况下创建本地通知

ios - 以编程方式创建分组样式的 UITableView

iphone - UITableViewCell 中的多种颜色

ios - MvvmCross iOS UITableView 不会在属性更改时更新

ios - iOS 中的 UITableViewCell 页脚文本

ios - 通知 iVar 值变化

ios - ObjC : is an object released IMMEDIATELY when no one references it?

objective-c - 设置服务器以从传入套接字连接读取数据的最简单方法是什么?

ios - xib 中的 xcode6 静态 TableView