Как изменить имя кнопки возврата UINavigationController? - PullRequest
57 голосов
/ 26 марта 2012

У меня есть UIViewController, и я перемещаюсь от моего первого контроллера представления ко второму контроллеру представления, и я хочу изменить имя кнопки, показанной на navigationcontroller для возврата ....

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

теперь во втором viewcontroller Я хочу изменить имя кнопки в navigationController.

Ответы [ 17 ]

1 голос
/ 03 января 2018

Попробуйте ниже код:

[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];
1 голос
/ 29 июня 2017

Вы можете достичь этого, используя titleView из navigationItem

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")
}
0 голосов
/ 26 июня 2019

Я нахожусь на ViewController1 и иду к ViewController2. Если я хочу изменить имя кнопки возврата, отображаемой на ViewController2, я сделаю это в ViewController2.

Swift 5

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

Объектив-C

self.navigationController.navigationBar.topItem.title = @"BackButtonTitle";
0 голосов
/ 14 февраля 2018

Swift 4

В вашем UIViewController установите это:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton
0 голосов
/ 07 февраля 2018

У меня была довольно сложная раскадровка со многими навигационными контроллерами, и мой клиент хотел, чтобы все кнопки «Назад» говорили «Назад»

Я прошел через Interface Builder и добавил «Назад» в поле кнопки «Назад».каждого UINavigationItem.

Я не работал для каждого изменения сцены!

Проблема заключалась в том, что не каждый контроллер представления в раскадровке имел UINavigationItem.

Я исправил это, перетаскивая новый UINavigationItem на каждый UIViewController, у которого его не было, и установив все полей кнопки «Назад» на «Назад»

Следите за контроллерами, которыеим не предоставляется собственный UINavigationItem автоматически.

0 голосов
/ 24 июня 2014

Если вы используете раскадровку, есть простой способ сделать это (у меня это работало нормально).

  • Перейти к вашей раскадровке
  • Выберите, какой UIViewController вы хотите изменить текст кнопки возврата.
  • Нажмите на UINavigationItem в верхней части вашего UIViewController. (тот, что с названием)
  • На правой панели выберите инспектор атрибутов (4-й значок).
  • Теперь вы можете установить текст заголовка, приглашения и кнопки возврата.

enter image description here

Источник: http://pinkstone.co.uk/how-to-change-the-back-button-text-on-a-uinavigationcontroller-in-your-storyboard/

0 голосов
/ 12 апреля 2017

Есть два способа сделать это.

Первый способ - по коду программы:

Якименко Алексей - самый простой способ ответа: это действительно работает (проверено на Xcode 8 + iOS 10)

Swift3:

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

Примечание. Вы должны вызывать вышеуказанный код в контроллере представления источника, а не в контроллере представления назначения.

Второй способ - использовать раскадровку локализации через Main.strings file,

"nnnnnnn.title" = "localized string";

nnnnnnn означает идентификатор объекта BackBarButtonItem в исходном контроллере представления (не в контроллере представления назначения!)

Вам необходимо установитьСвойство "back" элемента панели навигации автоматически создаст BarButtonItem, вы найдете его идентификатор объекта.

Извините, мне не удалось загрузить скриншоты.

...