Objective c 从xib加载子类时如何设置子类UIView属性的值

Objective c 从xib加载子类时如何设置子类UIView属性的值,objective-c,uiview,interface-builder,subclass,xib,Objective C,Uiview,Interface Builder,Subclass,Xib,我有一个名为BannerHeaderView的子类UIView,并按照我希望的方式设计了它在xib中的布局。我已将xib类设置为BannerHeaderView。我在IB中连接了一个UILabel和一个UIImageView 问题是,在ViewController中初始化BannerHeaderView后,当我去设置这些子视图的值时,标签和图像视图为空。我也尝试过在init中设置它们 BannerHeaderView.h的代码: @interface BannerHeaderView : UIV

我有一个名为BannerHeaderView的子类UIView,并按照我希望的方式设计了它在xib中的布局。我已将xib类设置为BannerHeaderView。我在IB中连接了一个UILabel和一个UIImageView

问题是,在ViewController中初始化BannerHeaderView后,当我去设置这些子视图的值时,标签和图像视图为空。我也尝试过在init中设置它们

BannerHeaderView.h的代码:

@interface BannerHeaderView : UIView
@property (strong, nonatomic) IBOutlet UIImageView *bannerImage;
@property (strong, nonatomic) IBOutlet UILabel *headerLabel;

-(void)setTitle:(NSString *)title;
-(void)setImageFile:(PFFile *)imageFile;

@end
BannerHeaderView.m的代码:

@implementation BannerHeaderView
@synthesize headerLabel, bannerImage;

-(id)init{
    self = [super init];
    if (self) {
        [self customInit];
    }
    return self;
}

-(id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self customInit];
    }
    return self;
}

-(void)customInit{
    UIView *contentView = [[[NSBundle mainBundle] loadNibNamed:@"BannerHeaderView"
                                   owner:self
                                 options:nil] objectAtIndex:0];
    [self addSubview:contentView];
    contentView.frame = self.bounds;
}

-(void)setTitle:(NSString *)title{
    NSLog(@"HEADER = %@", headerLabel);
    headerLabel.text = title;
}
我正在ViewController中创建BannerHeaderImage,如下所示:

bannerHeader = [[BannerHeaderView alloc]initWithFrame:CGRectMake(0, 0, screenWidth, bannerHeight + segmentedHeaderHeight)];
[bannerHeader setTitle:@"I AM THE NEW TITLE"];
日志告诉我headerLabel为空

问题:

如何设置这些子视图的值? 我是不是应该按程序设计这个网站的布局

谢谢你抽出时间


另外,我花了几个小时研究这个问题,但我找不到解决办法。我确实在SO上发现了类似的问题,但没有一个问题有合适的答案让我能够解决我的问题…

请像这样将BannerHeaderView类设置为文件的所有者


请将BannerHeaderView类设置为文件的所有者,如下所示


添加“BannerHeaderView”xib的屏幕截图。谁是您的xib中的文件所有者?您是否连接了文件所有者视图属性?感谢@Bilal Ashwins answer帮助我解决了此问题。(我想你可能也在考虑同样的解决方案)。添加“BannerHeaderView”xib的屏幕截图。谁是您的xib中的文件所有者?您是否连接了文件所有者视图属性?感谢@Bilal Ashwins answer帮助我解决了此问题。(我想您可能也在考虑相同的解决方案)。谢谢,问题是我没有设置文件所有者的自定义类,而且我没有连接图像视图的插座和文件所有者的连接检查器中的标签。将子视图添加到xib时,我只是单击并将它们拖到BannerHeaderView的头文件中。我没有意识到我必须设置自定义类,并将文件所有者的输出连接到视图本身。很高兴,这对您有所帮助!谢谢,问题是我没有设置文件所有者的自定义类,而且我没有连接图像视图的插座和文件所有者的连接检查器中的标签。将子视图添加到xib时,我只是单击并将它们拖到BannerHeaderView的头文件中。我没有意识到我必须设置自定义类,并将文件所有者的输出连接到视图本身。很高兴,这对您有所帮助!