[ios] 탐색 표시 줄에서 “뒤로”버튼의 제목을 변경하는 방법

현재 왼쪽 막대 버튼 기본값은 현재 뷰를로드 한 뷰의 제목입니다. 즉, 버튼을 눌렀을 때 표시되는 뷰 (뒤로 버튼)입니다.

버튼에 표시된 텍스트를 다른 것으로 변경하고 싶습니다.

뷰 컨트롤러의 viewDidLoad 메서드에 다음 코드 줄을 넣어 보았지만 작동하지 않는 것 같습니다.

self.navigationItem.leftBarButtonItem.title = @"Log Out";

어떻게해야합니까?

감사.



답변

“NewTitle”이라는 제목의 ViewController를 호출하는 메소드에 배치해야합니다. push 또는 popViewController 문 바로 앞에 있습니다.

UIBarButtonItem *newBackButton =
        [[UIBarButtonItem alloc] initWithTitle:@"NewTitle"
                                         style:UIBarButtonItemStyleBordered
                                        target:nil
                                        action:nil];
[[self navigationItem] setBackBarButtonItem:newBackButton];
[newBackButton release];


답변

ChildVC에서 이것은 나를 위해 일했습니다 …

self.navigationController.navigationBar.topItem.title = @"Back";

스위프트에서도 작동합니다!

self.navigationController!.navigationBar.topItem!.title = "Back"


답변

backBarButtonItem에 대한 문서는 다음과 같습니다 .

“이 탐색 항목이 스택의 맨 위 항목 바로 아래에 있으면 탐색 제어기는이 탐색 항목에서 탐색 모음의 뒤로 단추를 파생합니다. […] 뒤로 단추의 사용자 정의 이미지 또는 제목을 지정하려는 경우 대신이 속성에 맞춤 바 버튼 항목 (맞춤 제목 또는 이미지 포함)을 할당 할 수 있습니다. “

View Controller A ( “부모” 보기 컨트롤러) :

self.title = @"Really Long Title";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Short" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;

다른 뷰 컨트롤러 B 가 탐색 스택의 맨 위에 있고 A 가 바로 아래에 있으면 B 의 뒤로 버튼에 “Short” 라는 제목이 있습니다 .


답변

스토리 보드를 사용하는 Xcode 4.5에서 Back 버튼의 값이 동적으로 변경 될 필요가 없을 때 발견 한 가장 쉬운 해결책은 View Controller의 탐색 항목과 관련된 “Back Button”필드를 사용하는 것입니다. “뒤로”버튼으로 다른 것을 말하고 싶습니다.

예를 들어 아래 스크린 샷에서 푸시하는 뷰 컨트롤러의 뒤로 버튼을 누르면 뒤로 버튼의 제목으로 “뒤로”가 표시됩니다.

여기에 이미지 설명을 입력하십시오

물론, 매번 약간 다른 것을 말하기 위해 뒤로 버튼이 필요한 경우에는 작동하지 않습니다 … 여기에 다른 솔루션이 모두 있습니다.


답변

나는 그 질문이 매우 오래되었다는 것을 알고 있지만 좋은 해결책을 찾았습니다.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Custom Title";
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;

childView에서 작동합니다! iOS 7에서 테스트되었습니다.


답변

어쩌면 나는 단순 해 보이지만 Apple의 문서에서 문구는 다음과 같습니다.

뷰 컨트롤러 중 하나 에서 사용자 지정 막대 버튼 항목을 지정하지 않으면 기본 뒤로 버튼 이 사용되고 제목은 이전 뷰 컨트롤러의 title 속성 값 즉, 한 수준 아래로 뷰 컨트롤러로 설정됩니다. 스택.

위의 올바른 것으로 표시된 솔루션은 상위 컨트롤러의 기본 버튼 항목을 설정합니다. 정답이지만 self.title새 컨트롤러를 NavigationController 스택으로 푸시하기 전에 UIViewController의 속성을 변경하여 문제를 해결하고 있습니다.

이렇게하면 다음 컨트롤러에서 뒤로 버튼의 제목이 자동으로 업데이트되며, 설정을 self.title다시 설정하면 viewWillAppear이 방법으로 너무 많은 문제를 일으킬 수 없습니다.


답변

이것은 나를 위해 더 잘 작동합니다. 시도 :

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];