ios - 带有 IB 的 UITableViewHeaderFooterView

标签 ios uitableview interface-builder

在像瘟疫一样避开 Interface Builder 多年之后,我决定给它一个机会。这并不容易。

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

我们应该如何使用 Interface Builder 创建一个包含 contentView 内容的 UITableViewHeaderFooterViewregisterNib: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/

相关文章:

ios - 如何为超过 20 个区域启动 MonitoringForRegion

ios - MVC 设计模式。 View 怎么适配呢?

ios - UIScrollView 在 Xcode 5 中不滚动

ios - 如何重新创建 Apple 在标准 iOS UITableView 中使用的旋转减号按钮?

swift - 我试图从 VC 中的另一个 View 禁用 tableview 上的 userInteraction,但它不会让我调用该函数

ios - 从代码切换到界面生成器中创建的 View

XCode:编译XIB时Interface Builder崩溃

iphone - 从 MKMapView 上的用户交互创建覆盖?

ios - 在 Interface Builder 中确定 UI 元素的可用运行时属性

ios - Objective-C:如何声明/定义 tableView 上使用的方法