如何在表格视图的标题中添加多个单元格(不是部分标题)?

Posted

技术标签:

【中文标题】如何在表格视图的标题中添加多个单元格(不是部分标题)?【英文标题】:How to add multiple cells in header of a table view (not section header)? 【发布时间】:2015-07-22 13:58:29 【问题描述】:

我想实现这样的分段控件(红色圈出):

(当我们滚动这个视图时,分段控件会粘在视图的顶部,这让我觉得它本身就是一个单元格?但我可能错了)。

我已经实现了一个自定义单元格(在上图中以紫色显示红色椭圆上方的内容)并将其添加到我的表格视图的标题中,如下所示:

BigCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"BigCell"];
self.tableView.tableHeaderView = cell;

现在,我想我应该创建一个包含分段控件的第二个单元格,并将它也添加到表格标题中(而不是在部分标题中,因为我有很多带有标题的部分)。

然后,我会创建一个包含这两个单元格的 UIView 并将这个视图添加为我的 tableView 的标题?这是正确的方法吗? 非常感谢您的帮助!

【问题讨论】:

那么您是在问如何将 UISegmentedControl 添加到视图中?或者如何让视图贴在表格视图的顶部? @Steve_Wilford 抱歉不清楚,我首先要问的是,(可能)如何实现上面发布的示例图片中的分段控件?我正在考虑表格标题视图,但我已经在其中放置了一个单元格。其次,我怎样才能让这个分段控件粘在顶部。 很难准确地说出您给出的示例中发生了什么。但是,如果您将其添加到 tableView 的节标题中,您想要做的肯定是可能的。 @Reveclair 嗨。只需将 BigCell 和 SegmentedControl 合并到单个视图中即可。最好使用UITableViewHeaderFooterView 而不是UITableViewCell 【参考方案1】:

我认为您有几个选择。

1) 制作一个容器视图来托管您的两个“单元格”(不必是 UITableViewCells - 只是视图......)。添加单个容器视图作为表头。

2) 完全放弃使用表格标题,只需将视图放在表格上方,使其更短。如果您使用的是 UITableViewController,这会更复杂,但如果您只是在其他一些自定义 UIViewController 中托管 UITableView,则很简单。

【讨论】:

非常感谢您的回答。我可能会考虑您的第二种解决方案,因为它似乎可以使分段控件粘在顶部(参见***.com/questions/12993212/…)。但是,它也会使我所说的紫色大细胞也粘在上面?考虑到这两个视图将在 tableview 之外。再次感谢。 您可以随意布局。在 Interface Builder 中使用自动布局为您的三个视图定义几个约束 - 紫色、分段、表格视图。如果你走这条路,不要使用 UITableViewController!【参考方案2】:

这是一个 uilabel 粘在顶部的示例 - 只需将其更改为您的 uisegmentedcontrol

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    UIView *viewForSectionHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, SETTINGS_HEADER_HEIGHT)];
    [viewForSectionHeader setBackgroundColor:[Utils colorHeaderBlue]];
    UILabel *lblSectionTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, SETTINGS_HEADER_HEIGHT)];
    lblSectionTitle.text = @"PROFILE";
    lblSectionTitle.textAlignment = NSTextAlignmentCenter;
    lblSectionTitle.textColor = [UIColor whiteColor];
    [viewForSectionHeader addSubview:lblSectionTitle];

    return viewForSectionHeader;

【讨论】:

谢谢你的回答,我试过了。但是考虑到我的 tableView 中有很多部分,每个部分都有一个标题,这不会成功。此外,是什么让这个标头在您的代码中具有粘性?谢谢!

以上是关于如何在表格视图的标题中添加多个单元格(不是部分标题)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift ios中将多个图像添加到自定义表格视图单元格?

如何在一个视图中添加多个部分 UICollectionView 单元格

如何在表格视图和单元格之间添加图像

我如何测试某个表格视图单元格是不是具有某个图像?

如何将数据从表格视图单元格传回表格视图类?

如何将我的表格视图倒置,以便新添加的单元格出现在顶部而不是按钮?