UITableview 在重新加载时滚动到顶部太高?
Posted
技术标签:
【中文标题】UITableview 在重新加载时滚动到顶部太高?【英文标题】:UITableview scroll to top on reload goes too high? 【发布时间】:2016-02-25 22:25:37 【问题描述】:我正在使用 scrollRectToVisible:
[self.tblArticle scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
和/或 setContentOffset:
NSIndexPath* top = [NSIndexPath indexPathForRow:NSNotFound inSection:0];
[self.tblArticle scrollToRowAtIndexPath:top atScrollPosition:UITableViewScrollPositionTop animated:YES];
和/或这个:
[self.tblArticle setContentOffset: CGPointZero animated: YES];
重新加载后(尝试)滚动到我的 tableView 的顶部。但有时它会变得太高,以至于我看到桌子上方有太多的空白。我的表格有一个位于单元格行上方的标题。 当我向下滚动一点然后开始重新加载时,它变得太高了。如果我在上面,滚动很好。但是我在重新加载之前得到的越低,标题上方的空白就越多。 现在我正在计算我有多低,然后我设置如下:
CGFloat height = 0;
if(self.selectedCategoryID > 2)
height = 250;
[self.tblArticle scrollRectToVisible:CGRectMake(0, height, 1, 1) animated:YES];
这太糟糕了。感谢您的任何建议!
编辑我正在像这样使用 uitableview 重新加载:
// Reload table
[self.tblArticle reloadData];
【问题讨论】:
尝试添加一些与您预期相比发生的情况的屏幕截图。您是否使用刷新控件重新加载表格? 嗨@beyowulf。我添加了一些截图来演示这个问题。第一个显示我想要实现的目标,第二个显示我实际得到的。 你如何以及在哪里设置 tableHeaderView? 【参考方案1】:试试这个:
[_mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
[_mainTableView setContentOffset:CGPointZero animated:YES];
);
【讨论】:
【参考方案2】:请尝试将 UITableview 滚动到顶部。
[mainTableView setContentOffset: CGPointZero animated: YES];
【讨论】:
嗨!谢谢回复。试过了——同样的结果。我也会用这个来更新我的问题。谢谢!以上是关于UITableview 在重新加载时滚动到顶部太高?的主要内容,如果未能解决你的问题,请参考以下文章
加载视图控制器时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部
UITableView setContentOffSet 导致不必要的滚动到顶部