如何创建常规nib文件?我很困惑为什么我必须将它绑定到视图控制器类?

时间:2014-11-09 20:31:14

标签: ios xcode uiview uiviewcontroller interface-builder

为什么我不能用UIView创建一个笔尖?我似乎需要使用UIViewController创建它。我只想用Interface Builder创建一个视图,我可以在多个不同的视图控制器中使用它。

1 个答案:

答案 0 :(得分:0)

实际上,你可以 - 唯一缺少的是便利构造函数。就个人而言,我使用这样的代码片段:

+ (instancetype)instanceFromNib
{
    Class ownClass = self;
    id ret = nil;

    NSArray* objects = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(ownClass) owner:nil options:nil];

    for (id obj in objects) {
        if ([obj isKindOfClass:ownClass])
            ret = obj;
    }

    return ret;
}

唯一的限制是类nib需要在视图类之后命名并包含该类的对象(最好只包含一个)。

如果你想拥有一个从其他笔尖自动加载的视图笔尖,那么它会很棘手,但也是可能的(根据你想要做的努力)。在最简单的版本中,只需覆盖initWithCoder,其代码类似于我粘贴的代码(如果您需要保留其他笔尖中的属性,则会开始棘手的部分)。

此问题也可能在SO上得到解答。