如何在顶部插入新行后使UITableViewCell保持在同一位置?

时间:2014-07-17 15:17:39

标签: ios objective-c uitableview

我看到很多问题都在重新审视。 但我遇到了一个棘手的情况。 如果我的UITableView只有1行而我在顶部插入一行,它会向下滚动到UITableView的底部。我不希望这种情况发生。它应该保持在最顶层。那我怎么做到这一点?

2 个答案:

答案 0 :(得分:2)

插入新行后,请告诉表格视图scrollToRowAtIndexPath:atScrollPosition:animated:退出行索引的新值。

// Insert new rows.
...
// Create the new index of the current row.
NSInteger newRowIndex = <...>;
NSIndexPath *updatedPath = [NSIndexPath indexPathWithIndex:newRowIndex];
[self.tableView scrollToRowAtIndexPath:updatedPath atScrollPosition: UITableViewScrollPositionNone animated:YES];

请注意NSIndexPath indexPathWithIndex:假设您的表只有一个部分。如果您有多个部分,则需要将NSIndexPath indexPathWithIndexes:length:与索引值数组一起使用。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/scrollToRowAtIndexPath:atScrollPosition:animated

答案 1 :(得分:1)

UITableView继承自UIScrollView,因此您可以使用其contentOffset和(插入行后),

[tableView setContentOffset:oldContentOffset + heightOfAddedRows animated:NO];