如何以编程方式在 UITableView 中添加视图?

Posted

技术标签:

【中文标题】如何以编程方式在 UITableView 中添加视图?【英文标题】:How to add a view inside an UITableView programmatically? 【发布时间】:2011-12-14 16:33:47 【问题描述】:

在 Interface Builder 中,很容易将 UIView 添加到 UITable 并正确显示它,只需拖放即可完成。但现在这将是可选的,因此必须以编程方式放置。

界面生成器中的外观如下:

当我将新视图添加为子视图时,它显示在 UITableView-content 的顶部,但内容应该有一些偏移。我用下面的代码试了一下:

self.scrollView.frame = CGRectMake(0, -140, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
[self.tableView addSubview:self.scrollView];
[self.tableView setContentInset:UIEdgeInsetsMake(140,0,0,0)];
[self.tableView setContentOffset:CGPointMake(0, -140) animated:NO];

这似乎有效,它显示正确。但是当我向下滚动时,部分标题停留在距离顶部 140 像素的位置。所以我想我使用了错误的方法,但完全不知道如何解决它。谁能给我推动正确的方向?

【问题讨论】:

【参考方案1】:

好吧,我觉得我真的很愚蠢。经过几个小时的尝试,我想到了一些东西。刚刚检查了 .xib 文件的来源,并将带有子视图的那个与没有的比较。出现以下情况:

UIViewUITableView 的子视图的一部分。 添加了以下参考:<reference key="IBUITableHeaderView" ref="204195654"/>

所以,把代码改成这样:

[self.tableView addSubview:self.scrollView];
[self.tableView setTableHeaderView:self.scrollView];

而且它有效!

【讨论】:

你的意思是自动把你添加到tableView.HeaderView的视图转过来? 必须将tableHeaderView 属性设置为我的标题视图。不知道addSubview:是否需要,有可能不需要。

以上是关于如何以编程方式在 UITableView 中添加视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 UITableView 上添加 UIView

如何以编程方式在 UITableView 后面添加静态背景?

如何以编程方式设置 UITableView 的高度

如何以编程方式将 UITableView 样式从普通转换为组 [重复]

以编程方式将 UITableView 添加到侧边栏

以编程方式将 UISearchBar 添加到 UITableView 不起作用