0

ストーリーボードの Viewcontroller に UIButton を追加しました。このボタンをサブクラス化し、アウトレットを ViewController に設定すると、public 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

私はそのinitWithCoderを信じています。ただし、あなたの場合、色を変更するためだけに UIButton をサブクラス化しないでください。ビューコントローラーのviewdidloadでそれを行うだけです(initアウトレットが設定されていない可能性があります)。

于 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 に答える