使用 IB 从视图控制器的视图加载带有 XIB 的自定义 UIView(带有 XIB)



我有一个使用接口构建器构建的自定义UIViewMyCustomUIView)。我想将此自定义视图放在MyViewController的视图中,该视图也是使用IB设计的。我已经将UIView作为MyViewController的XIB中的子视图放置为一个子视图,并将其类别设置为MyCustomUIView。问题是,当我运行代码时,只会出现空白视图。(当我在代码中实例化MyCustomUIView时,它显示得很好。)

我只覆盖initWithFrame:方法MyCustomUIView.m中的以下方式:

- (id)initWithFrame:(CGRect)frame
{
    [[NSBundle mainBundle] loadNibNamed:@"MyCustomUIView" owner:self options:nil];
    self = self.view;
    return self;
}

我该怎么做才能正确地使视图负载正确?initWithCoder:应该如何?

您是正确的。IB使用initwithCoder。InitwithCoder看起来应该与您的其他初始化方法非常相似:

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        // CUSTOM INITIALIZATION HERE
    }
    return self;
}

一旦在IB中分配了课程,除非我误解了您的意图,否则您无需从捆绑包中实例化。

在IB中的视图控制器的视图部分中不要放置任何内容。相反,将IB中的视图控制器的NIB名称设置为包含视图的笔尖的名称。在包含视图的笔尖中,将文件的所有者设置为视图控制器类,然后将其view属性连接到视图。

结果将是,当视图控制器实例化时,如果它是从NIB实例化的(您没有证明是真正会发生的事情,但请说是),它将找到笔尖并加载。视图。

基本上,规则是,在视图控制器来自的地方没有区别,它将通过同一顺序进行相同的步骤,如我在书中所解释的那样:

http://www.apeth.com/iosbook/ch19.html#_view_controller_and_view_creation

在此网络广播中:

http://www.youtube.com/watch?v=ziufckpdiro

相关内容

  • 没有找到相关文章

最新更新