0

탐색 컨트롤러를 서브 클래 싱하여 NavigationBar를 사용자 지정하려고합니다. 웬일인지 나는 커스텀 버튼을 나타낼 수 없다. 나는 응용 프로그램을 작업 표시 유일한 사용자 지정을 테스트 할 때UINavigationController 하위 클래스에 사용자 지정 단추 추가

@interface NavController() 

@end 

@implementation NavController 

- (void)viewDidLoad{ 
    [super viewDidLoad]; 

    UIImage *wlImage = [UIImage imageNamed:@"wl-icon.png"]; 

    UIButton *wlButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [wlButton setFrame:CGRectMake(0, 0, wlImage.size.width, wlImage.size.height)]; 
    [wlButton setBackgroundImage:wlImage forState:UIControlStateNormal]; 

    UIBarButtonItem *wlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:wlButton]; 
    wlButtonItem.tintColor = [UIColor blackColor]; 

    self.navigationItem.rightBarButtonItem = wlButtonItem; 
    self.navigationBar.tintColor = [UIColor blackColor]; 
} 

@end 

색조입니다 : 내 설정 내가 NavController을 내 사용자 지정 하위 클래스를 사용하는 네비게이션 컨트롤러에 내장 된의 ViewController가있다 꽤 정직 . 버튼이 나타나지 않습니다. 이 탐색 항목 함께 할 수있는 뭔가가있는 경우

enter image description here

궁금입니다.

내 초기보기 컨트롤러가 자체 기본 설정 내에서 탐색 항목을 무시할 수 있습니까?

+0

당신의 이론은 유망한 것으로 들립니다. 초기보기 컨트롤러에 다른 단추를 추가하여 테스트 해 보았습니까? –

+0

그래, 초기보기 컨트롤러에서 단추를 추가 할 수 있습니다. 방금 추가하려는 버튼이 내 앱의 모든보기 컨트롤러에 표시 될 수 있기 때문에 하위 클래스에 기본보기가 표시되도록하고 싶었습니다. – DJSK

답변

3

nav 컨트롤러는 navigationItem이지만 실제로는 사용되지 않습니다. 뷰 컨트롤러를 밀어 넣거나 (위임 메서드를 사용하여) nav 컨트롤러 메서드를 재정 의하여 푸시 된 각 새 뷰 컨트롤러의 을 대신 수정해야합니다.

+0

그래서 내가 가장 가능성이 prepareForSegue 메서드를 통해 서로 다른보기 컨트롤러간에 전달 될 것이라고 내 각보기 컨트롤러에 대해 UINavigationItem 속성을 설정할 것이라고? 델리게이트 메서드로 어떻게 할 수 있습니까? – DJSK

+1

'- navigationController : willShowViewController : animated :'delegate 메소드를 사용하여 뷰 컨트롤러를 얻고 'navigationItem'을 설정할 수 있습니다. 그렇지 않으면, 당신은'- pushViewController : animated :'와'- popToViewController : animated :'를 모두 오버라이드해야 할 것이다. –

+1

아마 네비게이션 아이템을 설정하는 것보다는 버튼을 편집하는 것만으로도 충분할 것입니다. – Wain

관련 문제