如何在View的initWithCoder方法中访问子视图

时间:2012-10-07 18:54:08

标签: ios view subview

我有一个包含两个UILabel的自定义视图。我之前想要自定义他们的字体,所以我在initWithCoder方法中做了这个。

@implementation HomeTitleView
@synthesize ticketLabel;
@synthesize monthLabel;

- (id) initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if (self) {
        [monthLabel setFont:[UIFactory getFontForKey:@"home_month"]];
        [ticketLabel setFont:[UIFactory getFontForKey:@"home_ticket"]];
    }
    return self;
}

@end

不幸的是,这不起作用。使用调试器,我发现monthLabel和ticketLabel都是零。任何人都知道如何解决这个问题?我应该实施什么回调或方法,以便我可以访问我的两个标签?

2 个答案:

答案 0 :(得分:5)

你做不到。这些观点尚不存在。它们在调用loadView方法时被实例化,这在首次访问view属性时自动发生。如果您想在加载后操纵视图,请使用正确的方法viewDidLoad

编辑:假设您正在使用UIViewController课程。如果您使用的是UIView课程,则可以使用awakeFromNibdidAddSubview:

答案 1 :(得分:0)

您是否曾将monthLabel和ticketLabel分配给UILabel?类似的东西:

self.monthLabel = [[[UILabel alloc] init] autorelease];
self.ticketLabel = [[[UILabel alloc] init] autorelease];

如果有,您可以使用代码更新帖子吗?