Достаточно просто перетащить элементы панели на панель навигации контроллера просмотра в раскадровке в Interface Builder. Таким образом, вы можете установить выходы leftBarButtonItem
и rightBarButtonItem
элемента навигации контроллера вида. Но есть также выход backBarButtonItem
, и совсем не очевидно, как его установить. Как настроить пользовательский элемент панели с помощью интерфейса Builder?Конфигурирование backBarButtonItem элемента навигации контроллера просмотра в раскадровке
ответ
Выберите контроллер представления которого навигации элементы, которые вы хотите изменить. Черная полоса, отображающая идентификатор контроллера вида, изменяется на выделенный лоток его ссылочных объектов.
Перетащите элемент кнопки панели из библиотеки объектов на лоток.
- правая кнопка мыши на элементе навигации контроллера представления в главном объекте лотке на левой стороне. Подключите вновь добавленную кнопку в качестве выходного пункта навигационного элемента
backBarButtonItem
.
- Нажмите кнопку бар и настроить его в любом случае вы выбираете с инспектором Attributes.
В интерфейсе Builder вы можете изменить заголовок кнопки «Навигационный элемент».
Программно, вы можете установить пользовательскую кнопку возврата в режиме viewDidLoad вашего контроллера. В этом примере мы устанавливаем изображение кнопки на изображение под названием «customImage.png»:
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:nil];
// Set custom image here
backButton.image = [UIImage imageNamed:@"customImage.png"];
self.navigationItem.backBarButtonItem = backButton;
}
Как отмечалось выше @wcochran, при работе с viewControllers надевается на стеке navigationController, в выходное отверстие backBarButtonItem уже подключен и не может быть изменен. Кроме того, выбор режима навигации для дочернего VC и изменение текста кнопки «Назад» в IB не делает то, что вы ожидаете.
Теперь вы можете подумать, что замена backBarButtonItem ребенка VC решит проблему, но это не так. Смутно, если вы хотите установить название задней кнопку ребенка VC, вы должны установить кнопку заднего название своего родителя, как и (!):
- (void)viewWillAppear:(BOOL)animated // in the parent VC!
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
}
Это не будет делать что-либо на родительском VC. На самом деле, если родительский элемент является RootViewController navigationController, кнопки возврата вообще не будет. Но ребенок наследует (или забирает) созданную вами кнопку «Назад».
Это относится только к непосредственному дочернему VC, поэтому, если вы хотите сохранить ярлык в стеке navigationController, вам нужно установить его для каждого родителя.
Благодаря @wiliz в #iphonedev за разъяснение этого мне.
Я возвращаюсь из долгого времени в развитие iOS, и несмотря на все достижения, нам нужно делать такие хаки, как этот. Из iOS 3.1.2 ничего не изменилось. Спасибо за этот ответ. –
Как отмечено выше, @AdamBlock, вы должны установить все правильно в родительском VC.
Он показывает, как это сделать программно. Это также можно сделать в построителе интерфейса.
- Выберите родительский VC
- Выберите навигационный пункт
- Открыть атрибуты инспектора
- Установите название для кнопки Назад.
- 1. Настройка пользовательского элемента навигации значок BackBarButtonItem [Objective-c]
- 2. Нажмите несколько контроллеров просмотра в раскадровке
- 3. Как нажимать viewcontroller из appdelegate в раскадровке внутри контроллера навигации
- 4. Переключение между UIViewControllers в раскадровке без контроллера навигации
- 5. Xamarin Instantiate Начальный контроллер навигации в раскадровке
- 6. Изменение размера окна для просмотра размера контроллера в раскадровке
- 7. с использованием универсального контроллера iOS для просмотра в раскадровке?
- 8. Разработка iOS: необходимо ли изменить класс контроллера просмотра в раскадровке?
- 9. Установка фона для контроллера просмотра навигации
- 10. удалить контроллер просмотра от контроллера навигации
- 11. Мгновенный контроллер просмотра внутри контроллера навигации
- 12. Комбинированная вкладка, контроллер контроллера навигации и просмотра
- 13. Скрыть панель навигации в раскадровке
- 14. разная высота навигации в раскадровке
- 15. Скрыть панель навигации в раскадровке
- 16. Не удается оттеснить для просмотра контроллера встраивания в навигации контроллере
- 17. Пропустить данные об увольнении для просмотра контроллера вне контроллера навигации?
- 18. Редактировать панель навигации в раскадровке после Segue
- 19. Конфигурирование контрольного контроллера
- 20. Просмотр вариантов контроллера в раскадровке
- 21. Существующий пользовательский контроллер просмотра в раскадровке?
- 22. Изменение размера контроллера popover в раскадровке
- 23. Получить название backBarButtonItem
- 24. Настройка BackBarButtonItem
- 25. iOS - отображение контроллера просмотра уже в стеке навигации
- 26. Невозможно отключить два контроллера просмотра, встроенные в контроллер навигации
- 27. Добавить навигационную панель в контроллер просмотра без контроллера навигации
- 28. Метод UINavigationController для добавления контроллера просмотра в стек навигации?
- 29. Несколько Push Segues для одного вида контроллера в раскадровке
- 30. Настройка делегата контроллера навигации?
В моем навигационном элементе уже есть проводка «backBarButtonItem» (так как это пункт назначения push-сегмента), и он неизменен. Кажется, что нет никакого способа изменить название кнопки «Назад» - установка поля «Назад» в Инспекторе атрибутов не влияет. – wcochran
Я бы посоветовал вам создать отдельный вопрос для этого, если вы ищете решение, и вы находите идею делать это программно, чтобы быть отвратительным. К сожалению, ваша ситуация пока не встречается. – warrenm
@wcochran - это случилось со мной. Это небольшой надзор в Xcode, обходным путем является выбор UIBarButtonItem в библиотеке объектов, а затем перетащите его на элемент левой кнопки UINavigationItem. Появится синий прямоугольник, затем он установит его, и вы сможете настроить его, как обычно. –