【问题标题】:Can i make a table's tableHeaderView position fixed as I scroll?我可以在滚动时固定表格的 tableHeaderView 位置吗?
【发布时间】:2011-09-15 15:46:23
【问题描述】:

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

【问题讨论】:

标签: iphone objective-c ios uitableview


【解决方案1】:

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

【讨论】:

  • tableView:viewForHeaderInSection: 将允许 UITableViewDelegate 返回节标题的自定义视图,但是当表格的其余部分滚动时,这些视图将滚动
  • 是的,我看到它们在“联系人”应用程序中随着各自部分的顶部滚动(并且仅当该部分中的行占据顶部时才会显示在顶部表视图)。所以我想问题是 Badescu 是否需要每个部分的固定标题或整个表的单个固定标题。基于使用 tableHeaderView 的尝试,我假设后者。 (当然,对于只有 1 个部分的表来说,这两者几乎是等价的……)
  • 我了解 Basescu 根本不需要节,因此他可以将这种方法用于普通表的单个节用于表中的整行。
  • 不固定,向下滚动会向下移动标题。
  • @indiekiduk 我认为 Mark 的回复对你很有用(他的回复连续下一个)。
【解决方案2】:

我建议将 UISegmentedControl 放在 UITableView 顶部的单独视图中,而不是放在 tableHeaderView 中。您可能还想设置yourTable.bounces = NO; 以防止标题视图在您到达表格顶部时弹跳。

【讨论】:

    【解决方案3】:

    首先降低 tableview 的框架(在 tableview 顶部腾出空间)。然后在 scrollViewDidscroll 期间,正确修复 tableviewheader,使其不会随之滚动。

    这就是它的摘要。

    【讨论】:

      【解决方案4】:

      扩展@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 上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-26
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        • 2016-05-17
        • 2012-12-14
        • 2019-12-19
        • 1970-01-01
        相关资源
        最近更新 更多