iOS-加载xib并分配对象
我想知道是否有人知道我这样做时出错的原因:iOS-加载xib并分配对象,ios,uiview,xib,Ios,Uiview,Xib,我想知道是否有人知道我这样做时出错的原因: - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"LoadingScreen" owner:self options:NULL]; self = [nib objectAtIndex:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"LoadingScreen" owner:self options:NULL];
self = [nib objectAtIndex:0];
self.spinner = [self.subviews objectAtIndex:1];
self.loadingLabel = [self.subviews objectAtIndex:2];
self.shortDescLabel = [self.subviews objectAtIndex:3];
}
return self;
}
-(void)awakeFromNib
{
self.loadingLabel.font = [UIFont fontWithName:@"OpenSans-Regular" size:20];
self.shortDescLabel.font = [UIFont fontWithName:@"FaunaOne-Regular" size:18];
}
我得到了这个错误:
2014-07-15 09:32:49.431[4625:90b]-[UIView setSpinner:]:发送到实例0x10d02b350的无法识别的选择器看起来self被解释为UIView,而不是此行的自定义视图:
self.spinner = [self.subviews objectAtIndex:1];
此行要求UIView提供它没有的微调器属性。因此,造成你的错误。您需要在NIB中设置自定义类,以便将其解释为自定义视图而不是UIView
通过这样做,您可以从从Xib文件中获得的最顶层对象初始化self
[UIView setSpinner:]:发送到实例0x10d02b350的选择器无法识别
从错误中可以看出,在加载xib时,您得到的是UIView而不是CustomView。因此,您可能没有在Xib文件中将视图的类设置为YourCustomView。检查接口以获取自定义视图的类名。设置微调器方法在哪里?/self.spinner=[self.subviews objectAtIndex:1];在我上面粘贴的initWithFrame方法中,代码位于YourCustomView类文件中。
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"LoadingScreen" owner:self options:NULL];
self = [nib objectAtIndex:0];