1

오늘은 내가 엑스 코드에서 스토리 보드 덤비는 시작 종류의 내가 바보가 된 기분하게 한 문제가 있습니다 :사용자 정의 배경 이미지

내가 탐색 컨트롤러와 같은 테이블보기와 스토리 보드를 가지고 그 루트보기. 이제 탐색 바에 막대 버튼 항목을 추가했습니다. 이 버튼에 사용자 정의 배경이 있기를 원했기 때문에 "사용자 정의 클래스"필드에서 클래스의 이름을 선택하여이 사용자 정의 UIBarButtonItem 클래스를이 버튼에 할당했습니다.

는 클래스 자체는 다음과 같습니다

- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 
{ 
    self = [super initWithTitle:title style:style target:target action:action]; 

    if (self) { 
     [self setBackgroundImage:[self buttonBg] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    } 
    return self; 
} 

- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 
{ 
    self = [super initWithImage:image style:style target:target action:action]; 

    if (self) { 
     [self setBackgroundImage:[self buttonBg] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    } 
    return self; 
} 

- (UIImage *)buttonBg 
{ 
    return [[UIImage imageNamed:@"navBarButton.png" ] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 6, 15, 6) 
                    resizingMode:UIImageResizingModeTile]; 
} 

내가 나 자신에 의해 초기화를 호출 할 수 물론이 작품, 프로그래밍 버튼을 추가하는 가정이 클래스를 썼다. 문제는 인터페이스 작성기에서 어떤 초기화 프로그램을 호출했는지 알지 못한다는 것입니다. 기본 "초기화"를 덮어 쓰려고 시도 했는데도 호출되지 않았습니다 ...

많은 검색을 수행했습니다. 비록 이것이 기본적인 것들이라고 확신하지만 올바른 재료를 찾지 못했습니다. 그러니 죄송합니다. :)

답변

0

Interface Builder는 항상 initWithCoder:을 호출합니다. IB/스토리 보드 파일은 실제로 해독해야하는 XML 인코딩 파일이므로 의미가 있습니다.

나는 보통 내 자신의 initialize 메서드를 정의하고 재정의 한 init 메서드에서 호출합니다.

+0

간단하면서도 효과적입니다. 감사합니다. –

관련 문제