カスタムUIViewクラスの初期化処理

だんだんObjective-CというかXcodeの気持ちがわかってきた順加です。

UIViewを親クラスとしたカスタムクラスを作って、storyboardに配置したインスタンスに関連付けました。

しかしながら、Xcodeがデフォルトで書いてくれたコードには、ここに初期化処理を書いてねみたいなことが書いてあるのに、そのメソッドが呼ばれる気配がありません。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        NSLog(@"ここだよ");
    }
    return self;
}

デフォルトのコードの中には、コメントアウトされたdrawRectってメソッドがあるけど、ここに初期化処理を書くのは違う気がする。

よくよく調べてみたところ、storyboardを使った場合には、initWithFrameメソッドは呼ばれず、initWithCoderメソッドが呼ばれるようでした。

なのでinitWithFrameは消してしまって、下記のようにすればOK。

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self){
        [self myInit];
    }
    return self;
}

- (void)myInit
{
    NSLog(@"\(^o^)/");
}

人気の記事

カテゴリー: iOS, メモ タグ: , , , , , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*