текст кнопки назад не меняется - PullRequest
3 голосов
/ 24 ноября 2011

Для одного из моих контроллеров представления (расширяет UITableViewController) мне нужно настроить текст кнопки «Назад» на «Назад».Но кнопка «Назад» по-прежнему отображается с заголовком родительского контроллера (по умолчанию).

- (void)viewDidLoad
{
    ...
    self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
}

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011

Попробуйте это:

UIButton* backButton = [UIButton buttonWithType:101];
[backButton addTarget:self action:@selector(popView:) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];

UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backItem;
self.navigationItem.backBarButtonItem.enabled = NO;
self.navigationItem.leftBarButtonItem.enabled = YES;
[backButton release];

Вам необходимо реализовать простой метод popView, примерно такой:

3 голосов
/ 24 ноября 2011

Вам необходимо установить кнопку возврата на контроллере представления, который поместил класс в стек, например, контроллер, который создал и отправил отображаемый класс

Документы для Руководство по программированию View Controller дляiOS предполагает, что UINavigationItem хранятся в Navigation Item Stack, который предоставляет заголовок и кнопки для текущего элемента в стеке.

Важно (я добавил биты в [])

Хотя большая часть содержимого панели навигации получается из верхнего элемента навигации [в стеке навигации]указатель на задний элемент [предыдущего элемента в стеке] поддерживается, чтобы можно было создать кнопку возврата (с названием предыдущего элемента).

Просмотр документов в разделев разделе Configuring the Navigation Item Object есть диаграмма, на которой показан стек, а backItem указывает на элемент под верхним элементом в стопке.В вашем случае верхний элемент стека будет ссылаться на UINavigationItem для класса, который вы показываете, а backItem будет указателем на класс, который его выдвинул.

NB
Посмотрите на этот раздел в документах, изображение стоит тысячи слов

0 голосов
/ 23 февраля 2012

Вот немного больше информации из последней ссылки на класс UINavigationController, в которой рассказывается, как изменить кнопку в «толкающем» или «толкаемом» контроллере (я бы добавил ссылку, но Apple продолжает плавно перемещать вещи пути. Пожалуйста, используйте ваш любимый поисковик).

В итоге: если вы настраиваете кнопку возврата в контроллере push (то есть в предыдущем), вы получаете доступ к элементу backBarButtonItem. Это идеально подходит для настройки кнопки «назад» с последовательным именем независимо от типа следующего контроллера. Если вы хотите / должны изменить его в выдвинутом (то есть текущем) контроллере, вам нужно получить доступ к leftBarButtonItem.

Соответствующий текст здесь:

Элемент панели кнопок в левой части панели навигации позволяет переход к предыдущему виду контроллера на навигацию стек. Контроллер навигации обновляет левую часть Панель навигации выглядит следующим образом:

Если в новом контроллере представления верхнего уровня есть элемент пользовательской кнопки левой панели, этот элемент отображается. Чтобы указать пользовательскую кнопку левой панели item, установите свойство leftBarButtonItem контроллеров представления элемент навигации.

Если контроллер представления верхнего уровня не имеет пользовательского элемента кнопки левой панели, а элемент навигации предыдущего контроллера представления имеет действительный элемент в свойстве backBarButtonItem, панели навигации отображает этот элемент.

Если пользовательский элемент панели кнопок не указан ни одним из контроллеров представления, используется кнопка возврата по умолчанию, а ее заголовок устанавливается на значение свойства title предыдущего контроллера представления, то есть контроллер представления на один уровень вниз по стеку. (Если есть только один просмотр контроллера в стеке навигации, кнопка возврата не отображается.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...