在 Xcode 10 中添加自定义 UITableViewController 标头
Posted
技术标签:
【中文标题】在 Xcode 10 中添加自定义 UITableViewController 标头【英文标题】:Adding a custom UITableViewController Header in Xcode 10 【发布时间】:2019-04-08 20:06:50 【问题描述】:我正在关注第 4 版 ios 编程,大书呆子牧场指南。我使用的是 Xcode 10.0,而本书使用的是 Xcode 5.0,并且我一直在部署到运行 iOS 11.0 的第 6 代 iPad。我在第 9 章,我正在尝试为 UITableViewController
派生类 ItemsViewController
添加自定义标题视图。
我创建了一个名为HeaderView.xib
的空用户界面文件。在该文件中,我创建了一个UIView
,其中包含来自界面构建器的两个按钮。我将 File's Owner 类类型设置为ItemsViewController
。我将HeaderView
的UIView
大小更改为Freeform,并将视图大小调整为按钮的大小。我将HeaderView
的背景颜色设置为清除。我还将文件所有者视图连接到界面生成器中的UIView
。
在 ItemsViewController 内部,我添加了一个 IBOutlet UIView*
属性以将 HeaderView
连接到 ItemsViewController
。我编写了- (UIView*)headerView
实例方法来加载标题视图包。
- (UIView*)headerView
if (!_headerView)
[[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];
return _headerView;
然后在viewDidLoad
中设置标题视图。
- (void)viewDidLoad
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
UIView* header = self.headerView;
[self.tableView setTableHeaderView:header];
当我部署和运行应用程序时,我得到一个带有我添加的两个按钮的黑屏。如果我删除了viewDidLoad
的最后两行,应用程序可以正常加载我制作的一些虚拟数据。
为什么HeaderView
会覆盖所有ItemsViewController
显示选项并显示黑屏?
【问题讨论】:
如果您使用的是基于 Xcode 5 的指南,您确实应该找到更新的教程。很多东西都变了。 我这样做是因为我的工作有需要维护的应用程序,这些是我提供的材料。所以,我正在尽我所能。 【参考方案1】:这就是问题
我还将文件的所有者视图连接到界面构建器中的 UIView。
由于文件所有者是您的视图控制器,因此您将覆盖现有视图,即表。这就是为什么您只看到标题而没有看到表格的原因。您需要定义另一个变量 IBOutlet
并将标头链接到该变量。
【讨论】:
是的,是的,是的。你是对的。我创建了 outlet 属性,但我连接到现有视图,而不是我创建的属性。菜鸟失误。谢谢。以上是关于在 Xcode 10 中添加自定义 UITableViewController 标头的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode 10 中添加自定义 UITableViewController 标头
无法在 Mac 应用程序中添加自定义字体(OSX 10.9+ Xcode5+)
如何在已经是 NIB 的 UICollectionViewCell 中加载带有自定义单元格的 UITable