我有一个自定义UIView
( MyCustomUIView
这是使用接口生成器生成)。 我想将这个自定义视图MyViewController
的观点,这也是使用IB设计。 我已经放在一个UIView
作为一个子视图MyViewController
的厦门国际银行,并设置它的类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以包含视图笔尖的名称视图控制器设置的笔尖名称。 在含有该视图的笔尖,该文件的所有者设置为视图控制器类和其挂钩view
属性到视图。
其结果将是,当视图控制器被实例化,如果从笔尖实例化(这还没有被证明是到底发生了什么事情发生,但我们只能说这是),它会发现笔尖并加载从视图它。
基本规则是,它没有什么区别,其中一个视图控制器从何而来,它会经过寻找其以相同的顺序查看相同的步骤,正如我在书中解释:
http://www.apeth.com/iOSBook/ch19.html#_view_controller_and_view_creation
在这个网络直播:
http://www.youtube.com/watch?v=zIufcKpDIRo