我可以在滚动时固定表格的 tableHeaderView 位置吗?

问题描述 投票:0回答:4

我有一个表视图,并在其 tableHeaderView 上附加了一个 UISegmentedControl。如何使 tableHeaderView 固定,以便即使在滚动表视图时也始终可以在同一位置查看 UISegmentedControl?

iphone objective-c ios uitableview
4个回答
7
投票

tableView:ViewForHeaderInSection:
是您完成任务的选择。在普通表格中,这在某种程度上看起来像地址簿应用程序,其中名称的第一个字符在部分中,但您将拥有分段控件


1
投票

我建议将 UISegmentedControl 放置在 UITableView 顶部的单独视图中,而不是放在 tableHeaderView 中。您可能还需要设置

yourTable.bounces = NO;
,以防止当您到达表格顶部时标题视图弹起。


1
投票

扩展@mskw的答案:

您可以使用 UITableViewController (保留 UIRefreshControl 支持和键盘避免等细节)。您只需将工具栏嵌入到普通视图中并将其放置在 tableHeaderView 中。然后实现这个滚动视图委托方法来锁定。

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect rect = self.toolbarContainerView.frame;
    rect.origin.y = MIN(0,scrollView.contentOffset.y + scrollView.contentInset.top);
    self.toolbarContainerView.frame = rect;
}

请注意,如果您还使用节标题,则必须将这些视图发送到 tableHeaderView 后面,否则它们将漂浮在 tableHeaderView 上。


1
投票

首先降低桌面视图的框架(在桌面视图顶部留出空间)。 然后在scrollViewDidscroll期间,正确修复tableviewheader,这样它就不会随之滚动。

这就是总结。

© www.soinside.com 2019 - 2024. All rights reserved.