戻るボタンのテキストを変更する方法


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、2009年

1
注:[戻る]ボタンは2回保持されます[割り当てから1回、プロパティの保持から1回]。ただし、戻るボタンを変更しない場合、それは実質的に無害です。
ケルビン

29
以下のMarcoのコメントを参照してください。これは、プッシュされるコントローラーではなく、何か新しいものをプッシュしようとしているコントローラーで呼び出す必要があります。
ビル

97

マークWのアプローチは、どのコントローラーに適用するかがわかったときにうまく機能しました。これがナビゲーションスタックの場合:

(bottom)  ControllerA -> ControllerB  (top)

...そして、ControllerBが一番上にあるときに表示される戻るボタンにControllerAの短いタイトルを付けたい場合は、プロパティの変更をControllerAに適用します

そのためself.title、他の左/右バーボタンセッターとは異なり、のコンテキストにあります。


13
これは非常に重要な詳細です。
ビル

4
wcochran、ストーリーボードで機能します。親コントローラーの[戻る]ボタンを設定していることを確認してください。したがって、(ストーリーボードセグエ経由で)コントローラーBを指すコントローラーAがある場合、コントローラーBの[戻る]ボタンのテキストをカスタマイズするには、ストーリーボードエディターでコントローラーAの[戻るボタン]プロパティを設定する必要があります。
中断

マルコに感謝します。この質問について私が感じたのは、誰もが答えようとしている(そして正しく答えようとしている)が、尋ねられている質問に対してではないということです。あなたは基本的に釘を頭の中で正しく打つ。それをありがとう!
theiOSguy 2013

重要な詳細については+1。この答えを理解しない限り、上記の答えはうまくいきません。
baptzmoffire 2013年

そうです、新しいMacBook Oneのキーボードは慣れるのが少し難しいです。
メイソンG.ズウィティ

48

ストーリーボードでそれを行うことができます。戻る先のビューコントローラー(長いタイトルのビューコントローラー)を探し、そのナビゲーションアイテムを選択して、属性インスペクターを開き(Alt + Cmd + 4)、カスタムの[戻る]ボタンのタイトルを挿入します。

ここに画像の説明を入力してください


以前のコントローラーのナビゲーションタイトルではなく、すべての戻るボタンにテキスト「戻る」を付けたいので、これはまさに私が必要としていたことです。
Dave

8
なお、戻るボタンのテキストは、現在表示しているビューコントローラではなく、次のコントローラがプッシュされたビューに設定されています。
Darbio 2013年

これは良いシンプルな解決策ですが、すべての戻るボタンの名前を「戻る」に変更しないでください。AppleのHIGに反し、戻るボタンの目的の一部が無効になります。:(
Samuel Goodwin

うまくいきました。ストーリーボードファイルは必ず保存してください。ストーリーボードが保存されていないことに気付かなかったので、最初の試みはうまくいきませんでした!そして、はい、あなたは元のView ControllerのBACKボタンを変更します!
EricWasTaken

結構ですが、テキストなしで矢印だけを残したい場合はどうしますか?:)
Iurii Vasylenko 2015

40

マルコに感謝...それは私を助けました...

これが私がやったことです。

tableViewを使用して別のビューに移動する場合...コードを入力します。

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

あなたのdidSelectRowAtIndexPath方法で...最初のコントローラーの...コントローラーA

コントローラーBに移動すると、ボタンのタイトルは「戻る」になります。


1
親愛なる@ベンありがとう。それがまさに私が探していたものでした:)。
Arslan 2012

12

戻るボタンは、親のビューコントローラーのタイトルからテキストを引き出します。

親ビューコントローラー([戻る]ボタンをタップすると表示されるビューコントローラー)で、独自のタイトルを[戻る]ボタンの目的のテキストとして設定します。

たとえば、RootViewControllerクラスがあるとします。テーブルビューのセルをクリックすると、のインスタンスがプッシュされますSecondViewControllerSecondViewControllerインスタンスの「戻る」ボタンに「ホーム」と表示させます。

RootViewController.mviewDidLoadメソッドで:

self.title = @"Home";

SecondViewController.mviewDidLoadメソッドで:

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. StoryBoardを開く
  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];

将来的には、あなたにとってうまくいかなかった答えに対するコメントとして、このような投稿をしたいと思うかもしれません。
キーススマイリー

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.