【发布时间】:2017-11-28 06:23:52
【问题描述】:
我有一个名为 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' xib 的截图。谁是您的 xib 中的文件所有者,您是否连接了文件所有者视图属性?
-
感谢@Bilal Ashwins 的回答帮助我解决了问题。 (我认为您可能正在考虑相同的解决方案)。
标签: objective-c uiview interface-builder subclass xib