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


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.