Подтвердить что ты не робот

Как добавить кнопки в навигационный контроллер, видимый после segueing?

Я установил контроллер просмотра в Storyboard, который встроен в контроллер навигации. В этом навигационном контроллере я проверил Shows Navigation Bar и Shows Toolbar и включил панель навигации и панель инструментов в верхнем баре и нижнем баре соответственно в Simulated Metrics. Затем я "Покажу, например, нажмите", чтобы перейти от контроллера вида к другому контроллеру представления. На обоих контроллерах представления я настроил Simulated Metrics одинаково, поэтому и панель навигации, и панель инструментов видны на всех трех контроллерах.

Проблема заключается в том, что я могу добавлять элементы панели на первый контроллер представления как на панель навигации, так и на панель инструментов, но я не могу добавить элемент панели на панель навигации на втором контроллере представления. Когда я нажимаю кнопку на панели навигации, она добавляется на панель инструментов. И я не могу дважды щелкнуть навигационную панель, чтобы добавить заголовок. В контуре я вижу, что на втором контроллере представления нет элемента навигации, но он присутствует в первом контроллере представления.

Я могу добавить кнопки в навигационную панель программно, но я хочу сделать это визуально в Storyboard. Мой вопрос в том, что не так с этой настройкой, или это ошибка с Xcode?

enter image description here

enter image description here

4b9b3361

Ответ 1

Для XCode 6, UINavigationItem для второго контроллера просмотра не добавляется автоматически в объект View Controller внутри раскадровки. Вам нужно будет перетащить UINavigationItem на панель навигации для этого объекта Controller Object перед добавлением UIBarButtonItem поверх него.

Я не уверен, почему он спроектирован именно так. Я узнал об этом несколько недель назад.

Xcode 6 UiNavigationItem

Ответ 2

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

enter image description here

enter image description here

Очевидно, что не рекомендуется, если у вас есть тонна настраиваемого материала для автоматического компоновки.

Если у вас есть только один UIViewController, который пропускает навигационную панель, просто опустите на него UINavigationItem.

Ответ 3

Если вы используете Xcode 7 beta 4/5, попробуйте перезапустить Xcode, он решил проблему для меня

Ответ 4

Для второго контроллера представления в иерархии вы можете настроить заголовок в атрибутах, не добавляя "элемент навигации", enter image description here

Ответ 5

Я думаю, что это ошибка. У меня была та же проблема. Я исправил эту проблему, отключив классы размера, а затем включил ее.

Вы можете отключить и включить классы размера в doc-документе конструктора интерфейса.

enter image description here

Ответ 6

Это очень просто. Вам просто нужно использовать navigaitonItem сначала как держатель кнопок, а затем вы можете добавить barButtonItems поверх этого.

Ответ 7

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

Если настройка "Вид" в segue - "Показать (например, нажать)), перетаскивание элемента в верхний правый угол невозможно. Однако, если вы явно измените настройку "Kind" на "Push", это можно сделать.

Редактировать: на самом деле я только что заметил, что "Push" устарела. Не уверен, что Apple думает здесь. Тем не менее, вы можете просто изменить его обратно на "Показать" после добавления кнопки, и это, кажется, работает: D