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