首页 > 解决方案 > 将 xib 文件作为 UITableViewController 中的标头添加到 UITableView

问题描述

我有一个 的子类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;

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

感谢您的帮助

标签: iosobjective-cuitableview

解决方案


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

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

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


推荐阅读