我有一个UITableView。我想在表格的顶部插入一些行。但插入后,旧电池被推下。
NSArray *indexPaths = @[[NSIndexPath indexPathForRow: 0 inSection: 0]];
[self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: UITableViewRowAnimationNone];
例如: 插入之前:
插入后
我希望将第1项保留在原来的位置',例如:
插入后
新插入的单元格位于旧单元格上方(屏幕上未显示)。
答案 0 :(得分:1)
尝试以下方法,
[tableView scrollToRowAtIndexPath:value atScrollPosition:UITableViewScrollPositionTop animated:NO];
请注意,值将是indexPath,行数作为已添加的新行数。
创建indexPath使用,
[NSIndexPath indexPathForRow:inSection:]
答案 1 :(得分:0)
我自己解决了这个问题。我认为它更流畅,用户体验更好。
for (Poi *poi in fetchedObjects) {
[self.objects insertObject: poi atIndex: 0];
}
CGFloat totalHeight = 0;
for (int i=0; i<fetchedObjects.count; ++i) {
totalHeight += [self tableView: self.tableView heightForRowAtIndexPath: [NSIndexPath indexPathForRow: i inSection: 0]];
}
CGPoint currentContentOffset = self.tableView.contentOffset;
currentContentOffset.y += totalHeight;
[self.tableView reloadData];
self.tableView.contentOffset = currentContentOffset;