比方说,我已经创建了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