比方說,我已經創建了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");
}
現在我想創造一些變化,但我不希望複製筆尖文件,所以我儘量繼承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 2012-03-16 10:11:19