如何从通过情节提要创建的 UITableView 中提取 UIView?

Posted

技术标签:

【中文标题】如何从通过情节提要创建的 UITableView 中提取 UIView?【英文标题】:How do I pull a UIView out of a UITableView created via storyboard? 【发布时间】:2014-01-04 04:47:14 【问题描述】:

所以我或多或少地尝试这样做:

How to embed a UITableView in a UIScrollview

但是,我似乎无法弄清楚如何获得“子视图”(我使用引号,因为我不确定它是否是每个 API 的正式子视图,但它存在于 VC 的另一个视图中)所以我然后可以将其设置为 UITableView 的标题。此外,通过故事板中可用的所有选项,我也看不到如何将其设置为 UITableView 的标题。我将非常感谢任何帮助!

相关的故事板镜头,这里是层次结构:

这就是 UITableViewController 本身的样子。我正在尝试将灰色块设置为标题,以便它不会滚动:

这就是我希望以编程方式完成的任务(假设我走在正确的轨道上!):

UIView *viewForHeader = [[self tableView] SOMEWAYTOGETTHEINNERVIEW?];
[[self tableView] setTableHeaderView:viewForHeader]

如果我能以某种方式将视图设置为带有 ios 7 的 XCode 5 中的标题,那也很棒!对于这种情况,在旧版本中,视图似乎默认为标题:

Table Header Views in StoryBoards

【问题讨论】:

你试过 UIView *viewForHeader = [self tableView].tableHeaderView; ? 是的,我已经围绕前面做了一堆测试...... viewForHeader 将为零,因为 tableView 现在肯定没有设置 tableHeaderView 我的错,我以为你试图获取标题。 您需要将 tableview 添加到视图中,但比例较小。只需创建一个视图,然后向其添加一个表格视图(在底部),在顶部使用您想要的任何内容,并设置表的委托和数据源并连接它们。 【参考方案1】:

您可以创建一个继承自 UITableView 的自定义类,并将您的表格视图设置为该类。然后,您可以创建从该视图到您的自定义类的出口。像这样:

CustomTableView.h

@interface CustomTableView : UITableView
@property (weak, nonatomic) IBOutlet UIView *viewForHeader;
@end

然后是您尝试执行的代码:

UIView *viewForHeader = [self tableView].viewForHeader;
[[self tableView] setTableHeaderView:viewForHeader]

【讨论】:

由于某种原因这不起作用,我真的认为这是有道理的。我创建了一个名为 SplitDetailTV 的自定义 UITableView 并创建了一个出口,从我想成为 headerView UIView 到它,看起来就像上面一样。然后像上面的第二个代码简介一样以编程方式设置它。我现在可以验证 headerView 不为零,因此正在设置某些内容,但它仍然是可滚动的。是否有可能现在标题滚动并且上面的顶部堆栈溢出链接中的设计风格不再可能? 所以您希望页眉在滚动时保持在同一个位置? 是的,我希望能够滚动单元格,同时标题位保持在原位。就像拆分视图之类的东西,最初我以为我需要一个底部带有嵌入式 UITableView 的 UIView,但读过这是可能的,而且看起来更简单 ***.com/a/6961973/754604 这看起来和你现在遇到的问题一样 是的,我现在要走那条路。非常感谢您的帮助!

以上是关于如何从通过情节提要创建的 UITableView 中提取 UIView?的主要内容,如果未能解决你的问题,请参考以下文章

如何从情节提要“Main”中修复,但没有获得 UITableView。代码

如何拥有具有两种不同单元格类型的 UITableView 并以编程方式设置每个单元格布局,而不是通过情节提要?

使用情节提要的多节 UITableView

如何在情节提要中将属性 tableView 连接到 UITableView

使用情节提要在 UItableview 上浮动按钮

在没有情节提要的情况下使用 UITableView