7

Достаточно просто перетащить элементы панели на панель навигации контроллера просмотра в раскадровке в Interface Builder. Таким образом, вы можете установить выходы leftBarButtonItem и rightBarButtonItem элемента навигации контроллера вида. Но есть также выход backBarButtonItem, и совсем не очевидно, как его установить. Как настроить пользовательский элемент панели с помощью интерфейса Builder?Конфигурирование backBarButtonItem элемента навигации контроллера просмотра в раскадровке

ответ

18
  • Выберите контроллер представления которого навигации элементы, которые вы хотите изменить. Черная полоса, отображающая идентификатор контроллера вида, изменяется на выделенный лоток его ссылочных объектов.

  • Перетащите элемент кнопки панели из библиотеки объектов на лоток.

Storyboard view of a navigation controller and subordinate table view controller

  • правая кнопка мыши на элементе навигации контроллера представления в главном объекте лотке на левой стороне. Подключите вновь добавленную кнопку в качестве выходного пункта навигационного элемента backBarButtonItem.

Interface Builder screenshot illustrating how to wire up the back bar button outlet

  • Нажмите кнопку бар и настроить его в любом случае вы выбираете с инспектором Attributes.

Screenshot of the attributes inspector in Interface Builder showing options for the back bar button item

+4

В моем навигационном элементе уже есть проводка «backBarButtonItem» (так как это пункт назначения push-сегмента), и он неизменен. Кажется, что нет никакого способа изменить название кнопки «Назад» - установка поля «Назад» в Инспекторе атрибутов не влияет. – wcochran

+0

Я бы посоветовал вам создать отдельный вопрос для этого, если вы ищете решение, и вы находите идею делать это программно, чтобы быть отвратительным. К сожалению, ваша ситуация пока не встречается. – warrenm

+1

@wcochran - это случилось со мной. Это небольшой надзор в Xcode, обходным путем является выбор UIBarButtonItem в библиотеке объектов, а затем перетащите его на элемент левой кнопки UINavigationItem. Появится синий прямоугольник, затем он установит его, и вы сможете настроить его, как обычно. –

1

В интерфейсе 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; 
} 
+0

Это неверное описание. См. Мой ответ, как настроить другие свойства кнопок в Interface Builder. – warrenm

+0

@warrenm также предоставляет ссылку. поэтому пользователь может получить этот ответ напрямую. – Ayaz

+0

Хорошо, [здесь] (http://stackoverflow.com/a/9894298/155187). – warrenm

16

Как отмечалось выше @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 за разъяснение этого мне.

+0

Я возвращаюсь из долгого времени в развитие iOS, и несмотря на все достижения, нам нужно делать такие хаки, как этот. Из iOS 3.1.2 ничего не изменилось. Спасибо за этот ответ. –

3

Как отмечено выше, @AdamBlock, вы должны установить все правильно в родительском VC.

Он показывает, как это сделать программно. Это также можно сделать в построителе интерфейса.

  • Выберите родительский VC
  • Выберите навигационный пункт
  • Открыть атрибуты инспектора
  • Установите название для кнопки Назад.
Смежные вопросы