UITableView滚动到特定的分区

12

如何滚动到一个区块而不是一行?如果可以,应该怎么做?

顺便提一下,我正在使用一种方法来移除浮动的标题。

这里是我用来移动到所选区块第一行的代码。

if (self.openSectionIndex != NSNotFound) {
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:section] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

这是移除浮动页眉的代码

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (self.openSectionIndex != NSNotFound) {
        if (scrollView.contentOffset.y<=DEFAULT_HEADER_HEIGHT&&scrollView.contentOffset.y>=0) {
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
        } else if (scrollView.contentOffset.y>=DEFAULT_HEADER_HEIGHT) {
            scrollView.contentInset = UIEdgeInsetsMake(-DEFAULT_HEADER_HEIGHT, 0, 0, 0);
        }
    }
}

这大致是我想要的,但我更希望能够显示页眉。

目前,页眉在页面顶部被隐藏了。


你想要滚动到哪个部分?你的问题不是很清楚。 - Guy Kogus
我想滚动到该部分的顶部。抱歉,稍后会更清楚。 - chrs
你写的代码不起作用?看起来很简单,只需滚动到该部分的第0行并将其置于顶部即可。 - Guy Kogus
3
是的,它可以运行。只是不完全符合我的要求。你会看到代码会滚动,以至于该行会接触到顶部,这意味着标题将被推到可见区域之上。我希望标题现在就在该行所在位置,不是在屏幕顶部之上,而是在屏幕顶部的正上方。 :) - chrs
我认为这是更好的方法:https://dev59.com/SnVC5IYBdhLWcg3w21Mq - Linc
1个回答

8

使用 scrollRectToVisible 替代 scrollToRowAtIndexPath。通过传入与表视图大小相同的矩形来获得精确定位。

因此,如果您想要将标题栏定位到顶部,请使用标题栏的框架,将高度设置为与表视图相同,然后将其传递给 scrollRectToVisible


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接