将 xib 文件作为 UITableViewController 中的标头添加到 UITableView

Posted

技术标签:

【中文标题】将 xib 文件作为 UITableViewController 中的标头添加到 UITableView【英文标题】:Add a xib file to UITableView as a header within the UITableViewController 【发布时间】:2018-09-24 15:13:51 【问题描述】:

我有一个UITableViewController 的子类,我的桌子很好,准备好了。 我的问题是,我想添加一个自定义 UIView 作为表格的标题。所以我创建了一个空的xib文件“HeaderView.xib”并在其中添加了我的视图(一个UIView和2个UIButton)并将UITableViewController的类添加为文件所有者,并将我的两个按钮连接到该类:

- (IBAction)addNewItem:(id)sender




- (IBAction)toggleEdittingMode:(id)sender



在一个类扩展中,我添加了一个 UIView 类型的属性:

@property (nonatomic, strong) IBOutlet UIView *headerView;

然后我重写了getter方法:

- (UIView *)headerView

    if (_headerView) 
        [[NSBundle mainBundle] loadNibNamed:@"HeaderView"
                                      owner:self
                                    options:nil];
    
    return _headerView;

在 viewDidLoad 中:

self.tableView.tableHeaderView = self.headerView;

我不知道这是否是正确的方法,因为我在运行应用程序时看不到标题

感谢您的帮助

【问题讨论】:

我该怎么做? :) 【参考方案1】:

您为headerView 实现getter 的方式将始终返回nil。这样的事情应该表现得更恰当:

- (UIView *)headerView 
    if (!_headerView) 
        _headerView = [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil].firstObject;
    
    return _headerView;

您实际上需要将_headerView 设置为从loadNibNamed 返回的视图数组中的第一个对象。

【讨论】:

以上是关于将 xib 文件作为 UITableViewController 中的标头添加到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

如何将视图 XIB 作为子视图加载到视图控制器 XIB 中

如何将 UITableView 作为子视图添加到 xib 中的 UIView?

无法将 xib 文件添加到目标成员资格

如何将多个 .xib 重新用作另一个 .xib 的模板?

加载了 Xib 文件但没有出现

从 Textfield.inputview 加载 xib UIView