带IB的UITableViewHeaderFooterView [英] UITableViewHeaderFooterView with IB

查看:177
本文介绍了带IB的UITableViewHeaderFooterView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

经过多年避免瘟疫之类的Interface Builder,我决定给它一个机会。这并不容易。

After many years of avoiding Interface Builder like the plague I decided to give it a chance. It's not easy.

UITableViewHeaderFooterView 为例。与 UITableViewCell 一样,它有一个 contentView 属性。与 UITableViewCell 不同,它在Interface Builder对象库中没有模板。

Take UITableViewHeaderFooterView for example. Like UITableViewCell, it has a contentView property. Unlike UITableViewCell, it doesn't have a template in the Interface Builder object library.

我们应该如何使用Interface Builder创建 UITableViewHeaderFooterView ,内容 contentView registerNib:forHeaderFooterViewReuseIdentifier:存在的事实让我觉得这应该是可能的。

How are we supposed to use Interface Builder to create a UITableViewHeaderFooterView with the content inside contentView? The fact that registerNib:forHeaderFooterViewReuseIdentifier: exists makes me think this should be possible somehow.

推荐答案

这是我用IB定义 UITableViewHeaderFooterView 的最接近的地方:

This is the closest I got to define a UITableViewHeaderFooterView with IB:

a。创建 UITableViewHeaderFooterView 子类( MYTableViewHeaderFooterView )。

b 。仅为 contentView 创建一个nib文件( MYTableViewHeaderFooterContentView )。

b. Create a nib file for the contentView only (MYTableViewHeaderFooterContentView).

℃。在 MYTableViewHeaderFooterView 中覆盖 initWithReuseIdentifier:以加载nib文件中定义的视图。

c. Override initWithReuseIdentifier: in MYTableViewHeaderFooterView to load the view defined in the nib file.

 - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithReuseIdentifier:reuseIdentifier];
    if (self)
    {
        NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"MYTableViewHeaderFooterView"
                                                          owner:self
                                                        options:nil];
        UIView *nibView = [objects firstObject];
        UIView *contentView = self.contentView;
        CGSize contentViewSize = contentView.frame.size;
        nibView.frame = CGRectMake(0, 0, contentViewSize.width, contentViewSize.height);
        [contentView addSubview:nibView];
    }
    return self;
}

d。注册 MYTableViewHeaderFooterView 类而不是nib文件:

d. Register the MYTableViewHeaderFooterView class instead of the nib file:

[self.tableView registerClass:[MYTableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"cell"];

这篇关于带IB的UITableViewHeaderFooterView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆