当前位置: 首页 > 知识库问答 >
问题:

如何在UITableView中隐藏第一节标题(分组样式)

鲜于喜
2023-03-14

由于使用分组样式的表视图的设计在iOS 7中发生了很大的变化,我想隐藏(或删除)第一节标题。到目前为止,我还没有做到这一点。

经过简化,我的代码如下所示:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return 0.0f;
    return 32.0f;
}

- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
        return view;
    }
    return nil;
}

- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return nil;
    } else {
        // return some string here ...
    }
}

如果我返回的高度为0,则不会使用节索引0调用其他两个方法。但是,仍然使用默认高度绘制空节标题。(在iOS 6中,调用这两个方法。但是,可见结果是相同的。)

如果返回不同的值,则节标题将获得指定的高度。

如果我返回0.01,它几乎是正确的。然而,当我在模拟器中打开“颜色未对齐图像”时,它会标记所有表视图单元格(这似乎是一个逻辑结果)。

问题UITableView的答案:从空部分隐藏标题似乎表明一些人成功地隐藏了部分标题。但它可能适用于普通样式(而不是分组样式)。

到目前为止,最好的折衷方案是将高度返回0.5,从而在导航栏下方形成一条稍粗的线。不过,如果有人知道如何完全隐藏第一节标题,我将不胜感激。

最新消息

根据卡格拉的分析,(https://stackoverflow.com/a/19056823/413337),仅当表视图包含在导航控制器中时,问题才会出现。

共有3个答案

茅鸿宝
2023-03-14

这个答案对我和我的团队来说都很有趣,而且很有魅力

  • 在Interface Builder中,只需将tableview移动到视图层次结构中的另一个视图下

原因:

我们观察到,如果第一个视图是UITableView,则这只会发生在视图层次结构中的第一个视图中。因此,除了第一个部分外,所有其他类似的UITableView都没有这个恼人的部分。我们尝试将UITableView移出视图层次结构中的第一个位置,一切都按预期进行。

南门展
2023-03-14

这是如何在UITableView(分组样式)中隐藏第一个节标题。

Swift 3.0

>

在heighForHeaderInSect方法中,返回最小正数。(不是零!)

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    let headerHeight: CGFloat

    switch section {
    case 0:
        // hide the header
        headerHeight = CGFloat.leastNonzeroMagnitude
    default:
        headerHeight = 21
    }

    return headerHeight
}
皮弘博
2023-03-14

我有一个对我来说相当干净的工作环境。所以我要回答我自己的问题。

由于0作为第一部分标题的高度不起作用,我返回1。然后我使用ContentInset来隐藏导航栏下面的高度。

目标-C:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
            return 1.0f;
    return 32.0f;
}

- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return nil;
    } else {
        // return some string here ...
    }
}

- (void) viewDidLoad
{
    [super viewDidLoad];

     self.tableView.contentInset = UIEdgeInsetsMake(-1.0f, 0.0f, 0.0f, 0.0);
}

斯威夫特:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1.0 : 32
}

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.contentInset = UIEdgeInsets(top: -1, left: 0, bottom: 0, right: 0)
}
 类似资料:
  • 在视图控制器中,我只有一个UITableView。在IB中,我制作了标题 使用上述代码,页脚部分被隐藏。但是不能把标题也隐藏起来。 查看解决方案的其他链接,我还在视图中添加了TableView,向TableView添加了约束,但标题部分仍然是它们的。 我哪里做错了?如何摆脱它?

  • 在另一个线程中解释了在故事板中将标题放置到UITableView的方法,即将组件(在我的示例中是视图)拖放到第一个原型单元的顶部。比作为tableview标题(而不是节)更粘 我的问题是,如果您拖放搜索栏并运行应用程序,搜索栏位于导航栏的后面,您可以向下拉动tableview并看到搜索栏。 如果对视图执行相同的操作,则永远不能通过向上滚动tableview将视图放在一边,因为它始终可见。 有人知道

  • 我创建了这个部分标题,不幸的是,我不知道如何在右边添加一些填充。 这是我的密码:

  • 我从mysql中选择了一些数据。然后我想格式化它。数据如下所示: 我想date,和type,并

  • 问题内容: 如何快速隐藏第一个ViewController或特定ViewController的导航栏? 我在中使用了以下代码: 以及: 两种方法都对所有ViewController隐藏导航控制器。 问题答案: 如果您知道其他所有视图都应显示该栏,则可以将其重新设置为可见。 在Swift中:

  • Since 8.6 hideTitleLoading 隐藏标题栏loading 使用方法 AlipayJSBridge.call('hideTitleLoading'); 代码演示 显示/隐藏全局loading框 <h1>点击下面按钮查看效果</h1> <a href="javascript:void(0)" class="btn show">显示loading</a> <a href="jav