我想知道当我这样做时是否有人知道我为什么会收到错误:
- (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
答案 0 :(得分:0)
看起来self
被解释为UIView
,而不是此行上的自定义视图:
self.spinner = [self.subviews objectAtIndex:1];
这一行向UIView
询问“spinner”属性,它没有。因此,导致您的错误。您需要在NIB中设置自定义类,以便将其解释为自定义视图而不是UIView
。
答案 1 :(得分:0)
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"LoadingScreen" owner:self options:NULL];
self = [nib objectAtIndex:0];
通过这样做,您可以从Xib文件中获取最顶层对象来初始化自我。
[UIView setSpinner:]:无法识别的选择器发送到实例0x10d02b350
从错误中可以清楚地看到,在加载xib时,您将获得UIView
而不是YourCustomView
。因此,您可能不会 将视图的类设置为Xib文件中的YourCustomView
。检查界面中是否有自定义视图的类名。