我正在尝试创建一个自定义UIView,从nib文件中引入它的视图.
在我的控制器中我有类似的东西:
self.arcView=[[JtView alloc] initWithCoder:self];
self.arcView.backgroundColor=[UIColor redColor];
self.arcView.frame=CGRectMake(30.0f,200.0f, 100.0f, 100.0f);
[self.view addSubview:self.arcView];
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是应该进入论证的内容initWithCoder (NSCoder *)?我试过自己,但得到了一个不兼容的指针类型,但这似乎工作.但问题#2:
其次,说法是,你用initWithCoder用nibs,并initWithFrame把您的自定义视图帧时.好吧,我想nib在我的自定义视图中加载一个然后将其放入框架中.我可以像上面一样添加一个框架,它没问题(它看起来像是有效的)?
initWithCoder以前被称为init和viewDidLoad方法.你永远不会打电话给它.当你从你的文件中加载一个nib文件时会调用它mainBundle.
然而,它NSCoder作为一个参数收到.检查它在类中的调用方式:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self baseClassInit];
}
return self;
}
- (void)baseClassInit {
//initialize all ivars and properties
}
Run Code Online (Sandbox Code Playgroud)
你正在以相反的方式做到这一点:不是你应该打电话的人initWithCoder:,而是实现它的loadNibNamed:owner:方法.
您需要在代码中执行的操作是调用
UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"theNIB"
owner:self
options:nil] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
这将解开NIB,并调用您的initWithCoder:初始化程序,并返回一个连接所有插座的视图.
| 归档时间: |
|
| 查看次数: |
15468 次 |
| 最近记录: |