펜촉을 올바르게로드하여 사용자 정의 된 uiscrollview 하위 클래스를 올바르게 만들려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/835735

문제

나는 내 펜촉 안에 멋진 uiscrollview를 가지고 있었는데, 그것은 잘 작동했습니다. 그런 다음 매우 특별한 요구와 Uiscrollview를 서브 클래스를 가졌습니다. 내 펜촉에서, 나는 Identity Inspector의 수업을 내 서브 클래스로 변경했습니다.

그러나 어떤 이유로, 내 -initwithframe : nib 로더가 펜촉에서 모든 객체를 빌드 할 때 메소드가 호출되지 않습니다. 사실 나는 지금 내 서브 클래스에서 아무것도 바꾸지 않았습니다. 그리고 스크롤보기는 잘 작동합니다. NIB에 말하더라도 빈 Uiscrollview가 테스트 목적으로 특수화 된 Uiscrollview 인 것 같습니다.

UiscrollView를 서브 클래스 할 때 고려해야 할 사항이 있습니까? 여전히 NIB 파일을 사용하여 원근법으로 가져 오는 것이 있습니까?

전용 이니셜 라이저는 다음과 같습니다.

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        NSLog(@"Hello !!!!!!!!!!!!!");
    }
    return self;
}

나는 펜촉에서 그것을로드하려고한다면 콘솔에서 그 인사를 결코 보지 못합니다. 물론, 내가 혼자서 그것을 할당하고 초기화한다면, 그것은 작동합니다. 그러나 대신 그 멋진 인터페이스 빌더를 사용할 수 있다면 스크롤보기를 프로그래밍 방식으로 배치하고 싶지 않습니다.

도움이 되었습니까?

해결책

NIB 또는 XIB의 객체는 직렬화 된 물체로 저장되므로 사용해야 함을 의미 할 수 있습니다. awakeFromNib 초기 메소드가 호출되지 않기 때문에 방법.

다른 팁

연장하다 initWithCoder, 슈퍼 방법을 호출하십시오. 이 슈퍼 호출 중에 있습니다 setFrame 수업에서 호출됩니다.

그런 다음 표준을 재사용 할 수 있습니다 initWithFrame 전화로 initWithCoder, 인터페이스 빌더는 프레임 크기를 제어합니다.

- (id)initWithCoder:(NSCoder *)aDecoder {
    [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
    return [self initWithFrame:[self frame]];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top