2012-05-16 4 views
2

backBarButtonItem과 관련된 호기심 문제가 있습니다. 나는 전체 응용 프로그램에서 제목을 "뒤로"로 바꾸고 뒤로 버튼을 바꾸려면 대부분 -viewDidLoad 이벤트에서 작동하지만 다른보기에서는 작동하지 않고 이전보기의 이름이 표시됩니다. 누군가 같은 문제가 있습니까?UINavigationItem BackBarButtonItem이 바뀌지 않았습니다.

P. backBarButtonItem을 바꾸는 방법은 UIBarButtonItem을 인스턴스화하고 viewController.navigationIten.backBarButtonItem 속성으로 설정하는 표준 방법입니다.

+0

벤자민 버튼의 호기심? – abbood

답변

1

음, 마침내이 문제에 대한 해결책을 찾았습니다.

응용 프로그램의 모든 backBarButtonItem이 동일한 제목을 갖기를 원할 경우 좋은 방법은 UINavigationController를 서브 클래스 화하고 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated을 재정 의하여 다시 버튼을 대체하는 것입니다.

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BackButtonLabel", "") 
                    style:UIBarButtonItemStyleDone 
                    target:nil 
                    action:nil]; 
    viewController.navigationItem.backBarButtonItem = _backButton; 
    _backButton = nil; 
    [_backButton release]; 

    [super pushViewController:viewController animated:animated]; 
} 

이렇게하면 응용 프로그램의 모든 뒤로 버튼의 제목이 동일합니다.

다른 사람들에게 도움이되기를 바랍니다.

14

backBarButtonItem은 현재보기에 표시된 뒤로 버튼을 설정하지 않고 이 현재보기, 즉 다음보기의 뒤로 버튼으로 이동하는 뒤로 버튼을 설정합니다.

일반적으로 이전 버튼의 제목은 이전보기 컨트롤러의 제목이므로 의미가 있습니다.

탐색 표시 줄의 왼쪽 버튼을 직접 설정하려면 self.navigationItem.leftBarButtonItem을 사용하십시오. 당신이 그 시간에 현재보기에서보기를 누르면

+0

하지만 일부보기에서는 다른보기가 아닌 왜 작동합니까? – Rotten

+0

전혀 문서화되지 않았다는 사실에 좌절감을 표시했습니다. 감사합니다. @omz –

+0

OMG 그 첫 번째 단락 : mindblown : –

1

후 단지를 넣고 라인을 넣어, 다음의 ViewController의 객체를 할당

YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil]; 
      [email protected]"Back"; 
      [self.navigationController pushViewController:objView animated:YES]; 
다음보기로 돌아 가기 버튼으로 나타납니다

.... :

+0

이전에 해봤지만 dissapeard 전에 NavigationItem 제목도 변경되어 너무 좋아 보이지 않습니다 ... – Rotten

+0

yourViewController에 backBarButton도 정의되어 있습니까? –

+0

아니, 마침내 나는 그것을 풀었다. 아래에 내 자신의 응답을 참조하십시오. – Rotten

관련 문제