我有一个表视图,并在其 tableHeaderView 上附加了一个 UISegmentedControl。如何使 tableHeaderView 固定,以便即使在滚动表视图时也始终可以在同一位置查看 UISegmentedControl?
tableView:ViewForHeaderInSection:
是您完成任务的选择。在普通表格中,这在某种程度上看起来像地址簿应用程序,其中名称的第一个字符在部分中,但您将拥有分段控件
我建议将 UISegmentedControl 放置在 UITableView 顶部的单独视图中,而不是放在 tableHeaderView 中。您可能还需要设置
yourTable.bounces = NO;
,以防止当您到达表格顶部时标题视图弹起。
扩展@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 上。
首先降低桌面视图的框架(在桌面视图顶部留出空间)。 然后在scrollViewDidscroll期间,正确修复tableviewheader,这样它就不会随之滚动。
这就是总结。