web-dev-qa-db-ja.com

UINavigationControllerの戻るボタンの名前を変更するにはどうすればよいですか?

UIViewControllerがあり、最初のView Controllerから2番目のView Controllerに移動しており、navigationcontrollerに表示されているボタンの名前を変更したいのですが…。

SecondViewController *secondController = [[SecondViewController alloc]
                                              initWithNibName:nil
                                              bundle:NULL]; 
[self.navigationController pushViewController:secondController  animated:YES];

2番目のviewcontrollerで、navigationControllerのボタンの名前を変更します。

57
Bulla

ViewWillAppearでこれを書く

self.navigationItem.title = @"List View";

そして、ViewWilldisapperでこれを書きます

self.navigationItem.title = @"Back";

ストーリーボードがなくても機能します。

34
Tendulkar

プログラムでこれを行う場合は、次のように実行できます。

Objective-C

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:nil
                                                            action:nil];

[self.navigationItem setBackBarButtonItem:backItem];

Swift

let backItem = UIBarButtonItem(title: "Custom", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem

ただし、Interface Builderを使用する場合は、戻るボタンを設定するUINavigationItemを選択し、属性インスペクターに移動して戻るボタンのタイトルを変更するだけです。

enter image description here

注:現在表示されているView Controllerではなく、戻るボタンをタップすると戻るView Controllerでこれを設定する必要があることを覚えておくことが重要です。

182
Mick MacCallum

Interface BuilderまたはStoryboardingでそれを行う簡単な方法があります。親View Controllerで、Navigation Itemの「Back Button」属性を任意のタイトルに設定するだけです。以下に例を示します。

Set Back Button Title of child view controller form parent view controller

VillianのTavernビューには、親のナビゲーションコントローラー(Best Bars)の属性インスペクターで設定したように、戻るボタンのタイトルとして「戻る」があります。

42
Roger

スウィフト3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let backItem = UIBarButtonItem()
    backItem.title = "Back"
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

注:戻るボタンは、現在画面に表示されているものではなく、前のView Controllerに属します。戻るボタンを変更するには、セグエを開始したView Controllerでプッシュする前に更新する必要があります。

4
Anil

私の場合、次のようにメインスレッドでコードを実行するだけで機能しました。

dispatch_async(dispatch_get_main_queue(), ^(void) {

    self.navigationController.navigationBar.backItem.title = @"Custom Title";
});
4
Winston

Swiftで解決策は非常に簡単だとわかりましたが、

ViewControllerAViewControllerBに移動し、ViewControllerBで表示される戻るボタンの名前を変更する場合は、 ViewControllerA

self.title = "BackButtonTitle"

それでおしまい。

注:-これにより、タイトルが変更されますViewControllerA

2
Zaid Pathan

ビューコントローラーの[シミュレートされたメトリック]オプションが[推定]として選択されていないことが非常に重要です。

「なし」で試しましたが、すべて正しいです!

1
javifernandezr

これは、titleViewnavigationItemを使用して実現できます。

Swift 3回答

UINavigationItemの拡張機能を次のように作成します

extension UINavigationItem {
    func customTitle(title: String) {
        let titleLabel = UILabel()
        titleLabel.text = title
        titleLabel.textColor = UIColor.white
        titleLabel.textAlignment = .center
        titleLabel.sizeToFit()
        titleView = titleLabel
    }
}

•コントローラーでviewDidLoadを実行します

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        title = "Text For Back Button"
        navigationItem.customTitle(title: "Title for your view controller")
}
1
Leojin

このようにしてください:-

NSArray *viewControllerArr = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousViewControllerIndex = [viewControllerArr indexOfObject:self] - 1;
UIViewController *previous;
if (previousViewControllerIndex >= 0) {
    previous = [viewControllerArr objectAtIndex:previousViewControllerIndex];
    previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
                                                 initWithTitle:@"Back"
                                                 style:UIBarButtonItemStylePlain
                                                 target:self
                                                 action:nil];
}
1
Hussain Shabbir

ストーリーボード参照を使用すると、View ControllerがInterface BuilderにNavigation Itemを表示しない場合があります。

ナビゲーションバーを手動でドラッグしても機能しません。ナビゲーションアイテムをドラッグする必要があります。

その後、戻るボタンのタイトルを設定できます。これは、ビューのタイトルを設定する場所でもあります。

ミック・マッカラムの引用:

注:現在表示されているView Controllerではなく、戻るボタンをタップすると戻るView Controllerでこれを設定する必要があることを覚えておくことが重要です。

1
Lucas

以下のコードを試してください:

[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];
1
CharmingQin

実際には、戻るボタンのタイトルを変更できます。

self.navigationItem.backBarButtonItem.title = @"NewName";
1

これを行うには2つの方法があります。

最初の方法は、プログラムコードによるものです。

Yakimenko Alekseyの答えは最も簡単な方法です、これは本当に機能します(Xcode 8 + iOS 10でテスト済み)

Swift3:

self.navigationItem.backBarButtonItem?.title = "Your customized back title"

注:宛先View Controllerではなく、ソースView Controllerで上記のコードを呼び出す必要があります。

2番目の方法は、Main.stringsファイル、

"nnnnnnn.title" = "localized string";

Nnnnnnnは、ソースビューコントローラー内のBackBarButtonItemのオブジェクトIDを意味します(宛先ビューコントローラーではありません!)

ナビゲーションバーアイテムの「戻る」プロパティを設定する必要があります。BarButtonItemが自動的に作成され、そのオブジェクトIDが見つかります。

申し訳ありませんが、スクリーンショットをアップロードできませんでした。

0
osexp2003

Storyboardを使用する場合、これを行う簡単な方法があります(私にとってはうまくいきました)。

  • ストーリーボードに行く
  • 戻るボタンのテキストを変更するUIViewControllerを選択します。
  • UIViewControllerの上部にあるUINavigationItemをクリックします。 (タイトルのあるもの)
  • 右パネルで、属性インスペクター(4番目のアイコン)を選択します。
  • これで、タイトル、プロンプト、戻るボタンのテキストを設定できます。

enter image description here

ソース: http://pinkstone.co.uk/how-to-change-the-back-button-text-on-a-uinavigationcontroller-in-your-storyboard/

0
Luis

私はViewController1にいて、ViewController2に行きます。ViewController2に表示される戻るボタンの名前を変更したい場合は、ViewController2でこれを行います。

Swift 5

self.navigationController?.navigationBar.topItem?.title = "BackButtonTitle"

Objective-C

self.navigationController.navigationBar.topItem.title = @"BackButtonTitle";
0
said altintop

多くのナビゲーションコントローラーを備えたかなり複雑なストーリーボードがあり、顧客はすべての戻るボタンに「戻る」と言うことを望んでいました。

Interface Builderを使用して、すべてのUINavigationItemの[戻る]ボタンフィールドに「戻る」を入力しました。

シーンが変わるたびに働いていたわけではありません!

問題は、notストーリーボードのすべてのView ControllerにUINavigationItemがあったことです。

これを修正するには、新しいUINavigationItemを持たないすべてのUIViewControllerにドラッグアウトし、[戻る]ボタンフィールドのallを「Back」に設定します。

独自のUINavigationItemが自動的に与えられないコントローラーに注意してください。

0
DrSmart

スイフト4

IViewControllerで、これを設定します:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton
0
Ben-hur Ott