Как добавить кнопки в навигационный контроллер, видимый после segueing?
Я установил контроллер просмотра в Storyboard, который встроен в контроллер навигации. В этом навигационном контроллере я проверил Shows Navigation Bar и Shows Toolbar и включил панель навигации и панель инструментов в верхнем баре и нижнем баре соответственно в Simulated Metrics. Затем я "Покажу, например, нажмите", чтобы перейти от контроллера вида к другому контроллеру представления. На обоих контроллерах представления я настроил Simulated Metrics одинаково, поэтому и панель навигации, и панель инструментов видны на всех трех контроллерах.
Проблема заключается в том, что я могу добавлять элементы панели на первый контроллер представления как на панель навигации, так и на панель инструментов, но я не могу добавить элемент панели на панель навигации на втором контроллере представления. Когда я нажимаю кнопку на панели навигации, она добавляется на панель инструментов. И я не могу дважды щелкнуть навигационную панель, чтобы добавить заголовок. В контуре я вижу, что на втором контроллере представления нет элемента навигации, но он присутствует в первом контроллере представления.
Я могу добавить кнопки в навигационную панель программно, но я хочу сделать это визуально в Storyboard. Мой вопрос в том, что не так с этой настройкой, или это ошибка с Xcode?
![enter image description here]()
![enter image description here]()
Ответы
Ответ 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