Ios 在Xcode 10中添加自定义UITableViewController标头
我正在关注iOS编程的第四版《大书呆子牧场指南》。我使用的是Xcode 10.0,而这本书使用的是Xcode 5.0,我已经部署到运行iOS 11.0的第六代iPad上。在第9章中,我尝试为Ios 在Xcode 10中添加自定义UITableViewController标头,ios,objective-c,ipad,Ios,Objective C,Ipad,我正在关注iOS编程的第四版《大书呆子牧场指南》。我使用的是Xcode 10.0,而这本书使用的是Xcode 5.0,我已经部署到运行iOS 11.0的第六代iPad上。在第9章中,我尝试为UITableViewController派生类ItemsViewController添加自定义标题视图 我创建了一个名为HeaderView.xib的空用户界面文件。在该文件中,我使用界面生成器中的两个按钮创建了一个UIView。我将文件的所有者类类型设置为ItemsViewController。我将Hea
UITableViewController
派生类ItemsViewController
添加自定义标题视图
我创建了一个名为HeaderView.xib
的空用户界面文件。在该文件中,我使用界面生成器中的两个按钮创建了一个UIView
。我将文件的所有者类类型设置为ItemsViewController
。我将HeaderView
的UIView
大小更改为Freeform,并将视图的大小调整为按钮的大小。我将HeaderView
的背景色设置为清除。我还将文件的所有者视图连接到interface builder中的UIView
在ItemsViewController内部,我添加了一个IBOutlet UIView*
属性,将HeaderView
连接到ItemsViewController
。我编写了-(UIView*)headerView
实例方法来加载header视图包
- (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
显示选项并显示黑屏?这就是问题所在
我还将文件的所有者视图连接到interface builder中的UIView
由于文件所有者是您的视图控制器,因此您将覆盖作为表的现有视图。这就是为什么你只看到标题而没有表格。您需要定义另一个变量,它是一个
IBOutlet
,并将标题链接到该变量。如果您使用的是基于Xcode 5的指南,您真的应该找到一个更新的教程。很多东西都变了。我之所以这么做,是因为我的工作中有需要维护的应用程序,这些都是我得到的资料。所以,我要用我所拥有的一切。是的,是的,是的。你说得对。我创建了outlet属性,但我连接到了现有视图,而不是我创建的属性。新手犯的错误。非常感谢。