Как изменить текст на кнопке назад - PullRequest
90 голосов
/ 07 мая 2009

По умолчанию кнопка «Назад» использует в качестве текста заголовок viewcontroller. Могу ли я изменить текст на кнопке «Назад», не меняя заголовок контроллера представления? Мне это нужно, потому что у меня есть контроллер представления, заголовок которого слишком длинный для отображения, и в этом случае я бы хотел отобразить только «Назад» в качестве заголовка для кнопки «Назад».

Я попробовал следующее, которое не сработало:

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

Спасибо.

Ответы [ 19 ]

167 голосов
/ 07 мая 2009

Попробуйте

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

Я обнаружил, что, взглянув на backBarButtonItem документов в документах Apple для UINavigationItem .

97 голосов
/ 10 мая 2009

Подход Марка У сработал замечательно, когда я выяснил, к какому контроллеру его применять: тот, который переименовывается, а не тот, что сверху. Так что, если это стек навигации:

(bottom)  ControllerA -> ControllerB  (top)

... и вы хотите дать более короткое название для ControllerA в кнопке «Назад», отображаемой, когда ControllerB находится сверху , изменение свойства применяется к ControllerA .

Так что это больше в контексте self.title, не так, как другие сеттеры левой / правой кнопки.

47 голосов
/ 19 декабря 2011

Вы можете сделать это в раскадровке. Найдите контроллер представления, к которому вы хотите вернуться (тот, у которого длинный заголовок), выберите его элемент навигации и откройте инспектор атрибутов (Alt + Cmd + 4), вставьте пользовательский заголовок кнопки возврата.

enter image description here

40 голосов
/ 27 апреля 2010

Спасибо, Марко ... это помогло мне ...

Вот что я сделал.

Если вы используете tableView для перехода к различным представлениям ... введите код:

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

В вашем didSelectRowAtIndexPath методе ... первого Контроллера ... Контроллера А.

При переходе к контроллеру B кнопка будет иметь заголовок «Назад».

12 голосов
/ 08 июля 2010

Кнопка «Назад» извлекает свой текст из заголовка родительского контроллера представления.

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

Например, допустим, у нас есть класс RootViewController. Когда мы щелкаем ячейку в ее табличном представлении, мы выдвигаем экземпляр SecondViewController. Мы хотим, чтобы кнопка «Назад» экземпляра SecondViewController гласила «Домой».

в методе 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 голосов
/ 20 июня 2013

Эта работа лучше для меня. Попробуйте:

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] 
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
9 голосов
/ 10 марта 2014

Если вы используете раскадровку:

  1. Открыть StoryBoard
  2. В окне Outline документа найдите ViewController, к которому вы хотите вернуться к
  3. Нажмите на элемент навигации этого ViewController
  4. В проводнике Атрибуты измените значение кнопки «Назад» на свой собственный тайл

Вот и все, наслаждайтесь ...

5 голосов
/ 08 октября 2011

А в MonoTouch работает следующее (в ViewDidLoad родительского контроллера):

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
3 голосов
/ 06 августа 2012
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

Это сработало для меня.

3 голосов
/ 06 октября 2013

В родительском контроллере вида установите кнопку «Назад» при загрузке вида:

- (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.

Надеюсь, это поможет!

...