我看到很多问题都在重新审视。 但我遇到了一个棘手的情况。 如果我的UITableView只有1行而我在顶部插入一行,它会向下滚动到UITableView的底部。我不希望这种情况发生。它应该保持在最顶层。那我怎么做到这一点?
答案 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:
与索引值数组一起使用。
答案 1 :(得分:1)
UITableView继承自UIScrollView,因此您可以使用其contentOffset
和(插入行后),
[tableView setContentOffset:oldContentOffset + heightOfAddedRows animated:NO];