0

我在情节提要的 Viewcontroller 中添加了一个 UIButton。我将此按钮子类化,为 ViewController 设置一个出口,我可以使用公共 changeColor 函数更改它的背景颜色。

但我想在构造函数中执行此操作,这样我就不必从外部执行此操作。我尝试找出默认调用的构造函数,但在下面的示例中,我没有得到任何输出。是否存在默认情况下仅通过向情节提要添加对象来调用的构造函数?

- (id)initWithFrame:(CGRect)frame
{
    NSLog(@"constructor");

    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

-(id)init {
    NSLog(@"constructor");
    self = [super init];
    if (self) {
        // Initialization code
    }
    return self;
}

-(void)changeColor{
    [self setBackgroundColor:[UIColor redColor]];
}
4

3 回答 3

3

I belive its initWithCoder. But in your case you should probably not subclass UIButton just to change color. Just do it in your viewcontrollers viewdidload, (not init outlets may not be set there).

于 2013-11-02T08:35:08.060 回答
2

您需要覆盖 initWithCoder 方法。从 nib 或情节提要加载视图时调用此构造函数。

于 2013-11-02T08:31:27.110 回答
1

在您的情况下,您可以尝试:

- (id)initWithCoder:(NSCoder*)aDecoder 
{
    self = [super initWithCoder:aDecoder];
    if (self)
    {
         // Initialization code
         // calling [self changecolor]; for example
    }

    return self;
}

可以在这里找到更通用的解决方案。

于 2013-11-02T08:31:36.897 回答