在主视图中初始化时子类UIView未加载

时间:2012-03-21 21:39:04

标签: objective-c ios uiview

我正在尝试在UIButton内创建一个小指标。我已经放置了一个自定义视图,并将“界面”构建器中的自定义类更改为我的类。然后,我创建了一个相同类型的IBOutlet,并将它们连接到界面构建器中。

我的子类看起来像这样:

- (UIView *)initWithNumber:(NSInteger *)number
{
    self = [super initWithFrame:CGRectMake(0, 0, 34, 17)];
    if (self) {
        [self setBackgroundColor:[UIColor blueColor]];

    }
    return self;
}

然后在主视图中我做了:

self.indicatorControl = [indicatorControl alloc] initWithNumber:(NSNumber *)32];

但它在视图加载时没有初始化视图并改变背景颜色?为什么不这样呢?如果我将setBackgroundColor方法调用放在awakeFromNib中,它可以工作,但我希望它在我调用初始化时初始化并返回我的视图。看起来这应该有效。

1 个答案:

答案 0 :(得分:1)

如果您保留IBOutlet,那么界面构建器将重新初始化您的按钮,覆盖您的代码内按钮创建。是否要在代码或界面构建器中初始化按钮?

我建议:

代码:从界面构建器中取消链接按钮并将代码放入父视图控制器的viewDidLoad中 界面构建器:在界面构建器中将背景设置为蓝色或在awakeFromNib中执行初始化