私はUIViewのサブクラスを作成し、それにnibファイルをロードしているとします。
私はこれを実行します。nibファイルで作成されたUIViewをサブクラス化してオーバーライドする
MySubView.m
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MySubView" owner:self options:nil];
[self release];
self = [[nib objectAtIndex:0] retain];
self.tag = 1;
[self fire];
}
return self;
}
- (void)fire {
NSLog(@"Fired MySubView");
}
今、私はいくつかのバリエーションを作成したいが、私はnibファイルをコピーしたくないので、私はこのようMySubViewをサブクラス化しようとすると、背景色を変える:
をRedMySubView.m
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor redColor];
[self fire];
}
return self;
}
- (void)fire {
NSLog(@"Fired RedMySubView");
}
ビューが作成され、背景色は変更されますが、火災アクションはサブクラスによってオーバーライドされません。 fire
メソッドを呼び出すと、結果はコンソールにFired MySubView
となります。
どうすれば解決できますか?
私はペン先のレイアウトを保ちたいが、それに新しいクラスを与える。
これをチェックするquestion – iNeal