【问题标题】:UITableview scroll to top on reload goes too high?UITableview 在重新加载时滚动到顶部太高?
【发布时间】: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?

标签: ios objective-c uitableview cocoa-touch


【解决方案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];
    

    【讨论】:

    • 嗨!谢谢回复。试过了——同样的结果。我也会用这个来更新我的问题。谢谢!
    猜你喜欢
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2010-10-18
    • 2015-07-18
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多