在像瘟疫一样避开 Interface Builder 多年之后,我决定给它一个机会。这并不容易。
以UITableViewHeaderFooterView
为例。和 UITableViewCell
一样,它有一个 contentView
属性。与 UITableViewCell
不同,它在 Interface Builder 对象库中没有模板。
我们应该如何使用 Interface Builder 创建一个包含 contentView
内容的 UITableViewHeaderFooterView
? registerNib:forHeaderFooterViewReuseIdentifier:
的存在让我觉得这应该是可行的。
最佳答案
这是我用 IB 定义的最接近的 UITableViewHeaderFooterView
:
一个。创建一个 UITableViewHeaderFooterView
子类 (MYTableViewHeaderFooterView
)。
仅为 contentView
(MYTableViewHeaderFooterContentView
) 创建一个 nib 文件。
覆盖 MYTableViewHeaderFooterView
中的 initWithReuseIdentifier:
以加载 nib 文件中定义的 View 。
- (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;
}
注册 MYTableViewHeaderFooterView
类而不是 nib 文件:
[self.tableView registerClass:[MYTableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"cell"];
关于ios - 带有 IB 的 UITableViewHeaderFooterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162246/