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];