뒤로 버튼의 텍스트를 변경하는 방법


90

기본적으로 뒤로 버튼은 뷰 컨트롤러의 제목을 텍스트로 사용합니다. 뷰 컨트롤러의 제목을 변경하지 않고 뒤로 버튼의 텍스트를 변경할 수 있습니까? 제목이 너무 길어서 표시 할 수없는 뷰 컨트롤러가 있고이 경우 뒤로 버튼의 캡션으로 "뒤로"만 표시하고 싶기 때문에이 기능이 필요합니다.

작동하지 않는 다음을 시도했습니다.

self.navigationItem.leftBarButtonItem.title = @"Back";

감사.


3
뒤로 버튼에는 제목이있는 데 이유가 있습니다. 제목을 "뒤로"로 변경하면 사용자가 버튼이 돌아가는 대상에 대한 정보를 빼앗는 것입니다.
Simon

답변:


167

시험

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

UINavigationItem에 대한 Apple 문서 의 backBarButtonItem 문서를 살펴보면이를 발견했습니다 .


1
죄송합니다. 지금 테스트 할 기회가 없지만 내장 된 뒤로 버튼의 왼쪽을 가리키는 모양을 적용합니까, 아니면 UIBarButtonItem의 기본 직사각형 모양을 유지합니까?
Marco

사실 잘 모르겠습니다. backButton 속성을 설정하기 때문에 자동으로 뒤로 버튼 모양을 유지한다고 가정하지만 확인하려면 테스트해야합니다. 나도 궁금하다.
Marc W

2
예, 작동했습니다! 예는 제목을 변경하고 예, 모양을 저장합니다. 도움을 주셔서 감사합니다.
Ilya Suzdalnitski

1
참고 : 뒤로 버튼은 두 번 유지됩니다 [할당에서 1x, 속성의 유지에서 1x]. 그러나 뒤로 버튼을 변경하지 않으면 사실상 무해합니다.
Kelvin

29
아래 Marco의 설명을 참조하십시오. 컨트롤러가 푸시되는 것이 아니라 새로운 것을 푸시하려는 컨트롤러에서 이것을 호출해야합니다.
Bill은

97

Marc W의 접근 방식은 어떤 컨트롤러에 적용 할 것인지 파악한 후 훌륭하게 작동했습니다. 맨 위에있는 컨트롤러가 아니라 제목이 다시 지정되는 컨트롤러입니다. 따라서 이것이 탐색 스택 인 경우 :

(bottom)  ControllerA -> ControllerB  (top)

... 그리고 ControllerB가 맨 위에 있을 때 표시되는 뒤로 버튼에 ControllerA에 대한 더 짧은 제목을 지정 하려면 속성 변경을 ControllerA에 적용합니다 .

따라서 self.title다른 왼쪽 / 오른쪽 막대 버튼 설정 기와는 달리 의 컨텍스트에 더 가깝습니다.


13
이것은 매우 중요한 세부 사항입니다.
Bill

4
wcochran, 스토리 보드에서 작동합니다. 부모 컨트롤러의 뒤로 버튼을 설정했는지 확인하세요. 따라서 컨트롤러 B를 가리키는 컨트롤러 A (스토리 보드 segue를 통해)가있는 경우 컨트롤러 B의 뒤로 버튼에 대한 텍스트를 사용자 지정하는 것보다 스토리 보드 편집기에서 컨트롤러 A에 대해 "뒤로 버튼"속성을 설정해야합니다.
중단

감사합니다 Marco. 이 질문에 대해 제가 느낀 것은 모든 사람들이 질문에 대한 대답이 아니라 대답을하려고한다는 것입니다. 당신은 기본적으로 머리에 못을 박고 정확하게 맞았습니다. 감사합니다!
theiOSguy aug.

중요한 세부 사항은 +1. 이 답변을 이해하지 않으면 위의 답변이 작동하지 않습니다.
baptzmoffire 2010 년

맞습니다. 새로운 MacBook One의 키보드는 익숙해지기가 조금 어렵습니다.
Mason G. Zhwiti 2015-08-21

48

스토리 보드에서 할 수 있습니다. 돌아 가려는 뷰 컨트롤러 (긴 제목이있는 컨트롤러)를 찾아 탐색 항목을 선택하고 속성 검사기 (Alt + Cmd + 4)를 열고 사용자 지정 뒤로 버튼 제목을 삽입합니다.

여기에 이미지 설명 입력


모든 뒤로 버튼이 이전 컨트롤러의 탐색 제목 대신 "뒤로"라는 텍스트를 갖기를 원했기 때문에 이것은 정확히 필요한 것입니다.
Dave

8
참고로 뒤로 버튼 텍스트는 현재 표시 한 뷰 컨트롤러가 아닌 다음 컨트롤러가 푸시 된 뷰에 설정됩니다.
Darbio

이것은 좋은 간단한 솔루션이지만 하십시오 "뒤로", 그것은 다시 버튼의 목적 애플의 HIG와 패배 부분에 반하는 모든 뒤로 버튼의 이름을 변경하지 않습니다. :(
Samuel Goodwin

훌륭하게 일했습니다. 스토리 보드 파일을 저장하십시오. 스토리 보드가 저장되지 않았 음을 알아 차리지 못했기 때문에 첫 번째 시도가 작동하지 않았습니다! 그리고 예, 당신이 오는 뷰 컨트롤러의 BACK 버튼을 변경합니다!
EricWasTaken

아주 좋습니다.하지만 텍스트없이 화살표 만 남기고 싶다면 어떻게해야합니까? :)
Iurii Vasylenko 2015 년

40

고마워요 Marco ... 저를 도왔습니다 ...

여기 내가 한 일이 있습니다.

tableView를 사용하여 다른보기로 이동하는 경우 ... 코드를 입력하십시오.

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

당신의 didSelectRowAtIndexPath방법에서 ... 첫 번째 컨트롤러의 ... 컨트롤러 A.

컨트롤러 B로 이동하면 버튼 제목이 "뒤로"가됩니다.


1
@Ben에게 감사합니다. 그것은 내가 찾던 바로 그 것이었다 :).
Arslan

12

뒤로 버튼은 상위 뷰 컨트롤러의 제목에서 텍스트를 가져옵니다.

상위 뷰 컨트롤러 (뒤로 버튼을 누를 때 나타나는 뷰 컨트롤러)에서 자신의 제목을 뒤로 버튼의 원하는 텍스트로 설정합니다.

예를 들어, RootViewController수업 이 있다고 가정 해 봅시다 . 테이블보기에서 셀을 클릭하면의 인스턴스를 푸시합니다 SecondViewController. SecondViewController인스턴스 의 뒤로 버튼이 "Home" 으로 표시되기를 원합니다 .

viewDidLoad방법 RootViewController.m :

self.title = @"Home";

viewDidLoad방법 SecondViewController.m :

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];    

뒤로 버튼이 "뒤로"로 표시되도록하려면 상위 뷰 컨트롤러의 제목을 @"Back";


10

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

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

1
훌륭한 답변이 완벽하게 작동했습니다. 예외로 표시되어야합니다.
Muhammad Rizwan 2015 년

9

스토리 보드를 사용하는 경우 :

  1. 스토리 보드 열기
  2. 문서 개요 창에서 돌아 가려는 ViewController를 찾습니다.
  3. 해당 ViewController의 탐색 항목을 클릭하십시오.
  4. 속성 탐색기에서 뒤로 버튼 값을 사용자 지정 타일로 변경합니다.

그게 다야 ...


5

그리고 MonoTouch에서는 다음이 작동합니다 (부모 컨트롤러의 ViewDidLoad에서).

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);

3
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

이것은 나를 위해 일했습니다.


3

부모 뷰 컨트롤러에서 뷰가로드 될 때 뒤로 버튼을 설정합니다.

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    self.navigationItem.backBarButtonItem = 
       [[UIBarButtonItem alloc] initWithTitle:@"title" 
                                        style:UIBarButtonItemStylePlain 
                                       target:nil 
                                       action:nil];

}

autorelease최신 iOS 버전으로 마지막 에 포함 할 필요가 없습니다 .

도움이 되었기를 바랍니다!


1

[self.navigationController.navigationBar.backItem setTitle:@"back"];

그것은 나를 위해 작동합니다. "뒤로"를 다른 것으로 바꿀 수 있습니다.


코드로 답변 할 때 항상 제공된 코드의 문제가 무엇인지, 코드로 문제를 해결하는 방법을 설명하세요.
Lukas Knuth 2013 년

1

제목을 갖고 싶지 않다면 이것은 나를 위해 일했습니다!

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];

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

0

나는이 답변이 처음에는 왜 효과가 없었는지 마침내 알았습니다. 스토리 보드에 제목을 설정했습니다. 코드에 제목을 설정할 때. 효과가있다!

self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

미래에 당신은 당신을 위해 작동하지 않는 답변에 대한 의견으로 이와 같은 게시물을 만들 수 있습니다.
Keith Smiley

0

내 해결책은 뷰 컨트롤러가 탐색 스택에 푸시 될 때 제목을 설정하고 푸시 된 vc가 닫히기 전에 델리게이트 메서드를 사용하여 재설정하는 것입니다.

그래서 다른 뷰 컨트롤러를 다음과 같이 푸시 할 때 뷰 컨트롤러 호출에 제목 변경을 넣었습니다.

self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"];
self.pushedVC.delegate = self;   
[self.navigationController pushViewController:self.pushedVC animated:YES];
self.title = @"Back";

대리자 콜백 함수 (viewWillDissapear에서 호출) :

-(void)pushedVCWillClose:(PushedVC *)sender
{
    self.title = @"Previous Title";
}

0

뒤로 버튼의 텍스트를 변경하고 원래의 왼쪽 화살표 모양을 유지하고 사용자가 뒤로 버튼을 클릭 할 때 작업을 수행하려면 내 " CustomNavigationController "를 살펴 보는 것이 좋습니다 .


0

// 아래와 같이 이전 뷰 컨트롤러에서 제목을 설정하여이 작업을 수행 할 수 있습니다.

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for this view
        self.navigationItem.title = "My Title"

}

override func viewWillDisappear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for back button in next view 
        self.navigationItem.title = "Back"
}

0

뒤로 버튼 제목을 변경하려면 아래 코드를 참조하십시오.

InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES];

//Below code changed back button title on InformationVC page.
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil];
self.navigationItem.backBarButtonItem = backBarButton;`enter code here`

-1

이것은 나를 위해 일했습니다.

self.navigationController.navigationBar.topItem.title = "Back"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.