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 在重新加载时滚动到顶部太高?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在插入更多行时滚动到顶部

加载视图控制器时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部

UITableView setContentOffSet 导致不必要的滚动到顶部

防止缓存 iPhone Web 应用程序重新加载(滚动到顶部)

UITableView 防止滚动时重新加载

再次点击当前标签栏时如何在 UITableView 中滚动到顶部?