【问题标题】:How to inherit a custom view which has a .xib file如何继承具有 .xib 文件的自定义视图
【发布时间】:2013-10-30 06:46:18
【问题描述】:

有一个自定义视图,由类和 xib 文件组成。我用它作为

[[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];

问题是如何继承这个自定义视图。

我继承了myViewClass,但是我无法使用上面的代码创建实例。我认为我的方式错误。

【问题讨论】:

    标签: ios class xib


    【解决方案1】:

    一种选择是不在 .xib 文件中创建 MYBaseView 本身,但它是子视图。 这样您就可以轻松继承MYBaseView

    如果您以编程方式或在 Interface Builder 中创建视图对象,以下代码应该可以正常工作:

    - (id)initWithCoder:(NSCoder *)aDecoder
    {
        self = [super initWithCoder:aDecoder];
        if (self) {
            [self setUp];
        }
        return self;
    }
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            [self setUp];
        }
        return self;
    }
    
    - (void)setUp
    {
        UIView *view = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] lastObject];
        [self addSubview:view];
    }
    

    【讨论】:

    • 如果这样,我可以将.xib中的视图链接到MYBaseView吗?
    • 不,.xib 中的视图只是一个 UIView,您应该将 File Owner 链接到 MYBaseView。
    • 酷。我迭代了笔尖的子视图并将它们全部添加为子视图。
    【解决方案2】:

    应该是:

    myViewClass *newView = [[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];
    

    【讨论】:

    • 这是一个数组而不是一个视图。添加 lassObject 或 objectAtIndex:0
    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多