我想从表视图中删除一行而不使用下面的数据源方法。怎么做?
- (void) tableView : (UITableView *)tableView
commitEditingStyle : (UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath : (NSIndexPath *)indexPath
答案 0 :(得分:3)
不是那么简单,你必须使用UITableView
原子地执行此操作[_tableView beginUpdates]; // <-- pretty important
long selectedRow = _tableView.selectedRow;
[_tableView removeRowsAtIndexes:[NSIndexSet indexSetWithIndex:selectedRow] withAnimation:NSTableViewAnimationSlideUp];
//then remove your object from the array
[((NSMutableArray*) _searchResults) removeObjectAtIndex:selectedRow];
[_tableView endUpdates];
这可以防止在更新数组时调用委托方法。
答案 1 :(得分:2)
[UITableView deleteRowsAtIndexPaths: withRowAnimation:]
怎么样?
(我已经链接了Apple链接的文档)。
@Scar的想法也很好,但是这会刷新整个表格,如果用户滚动到表格的底部并且刷新将它们带到顶部,则可能会对用户造成一点破坏。
答案 2 :(得分:1)
从模型中删除行并调用-deleteRowsAtIndexPaths:withRowAnimation:
。