Xcode/раскадровка: не удается перетащить панель на панель инструментов наверху

У меня есть контроллер вида, который представляет собой подробный вид таблицы. Когда вы нажимаете на строку таблицы, вы переходите к подробному представлению. Детальный вид встроен в контроллер навигации, так что в левом верхнем углу панели навигации есть кнопка, которая отправляет вас обратно в таблицу. Пока все хорошо.

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

Однако, когда я пытаюсь перетащить элемент кнопки панели из списка объектов в панель навигации, это не займет. Вместо этого, когда я отпускаю кнопку мыши, она оставляет кнопку панели на контроллере панели вкладок внизу. (Моя схема навигации включает в себя различные вкладки, а для каждой вкладки - таблица, подробный вид и т.д.)

Кто-нибудь сталкивается с этим раньше и может предположить, что я делаю неправильно или какое-то обходное решение, чтобы добавить элемент кнопки панели в правую сторону экрана навигации. Должен ли я добавить его в код?

Спасибо за любые предложения.

Ответ 1

У меня такая же проблема с использованием Xcode6, и я заметил, что UINavigationItem автоматически добавляется для первого ViewController, который вы вставляете в NavigationController, но для последующих ViewControllers вам придется добавлять его вручную следующим образом:

  • В библиотеке объектов найдите Элемент навигации, затем перетяните его на свой 2nd ViewController в раскадровке.
  • В библиотеке объектов найдите Элемент панели кнопок, затем перетяните его элементом навигации, который вы создали на предыдущем шаге.

Теперь у вас будут ваши кнопки на панели, прикрепленные к верхней части вашей сцены.

Обновление Решение по-прежнему работает с XCode 7, но я хотел добавить более наглядную фотографию. На всякий случай кто-то не знаком со стандартными или техническими именами, упомянутыми выше. Обратите внимание на красные стрелки справа, они относятся к шагу 1, шаг 2, упомянутый выше. Также обратите внимание на иерархию представлений на левом красном прямоугольнике. введите описание изображения здесь

Ответ 2

Неприятный трюк:

  • Измените свой сегмент, чтобы нажать.
  • Установите требуемый контент
  • Установить, чтобы показать

Затем содержимое будет доступно для редактирования, и для segue у вас нет устаревшего стиля.

Ответ 3

В вашем диспетчере просмотра раскадровки, вероятно, отсутствует Navigation Item. Вы можете перетащить его из библиотеки объектов и перенести его на свой контроллер представления.

Затем вы сможете перетаскивать элементы панели на левой или правой стороне панели навигации.

Ответ 4

i решил. перетащите "Элемент навигации" в ваш подробный вид. чем вы можете перетащить элемент панели.

Ответ 5

Как я исправил эту проблему, вместо того, чтобы перетаскивать UINavigationController в Storyboard и пытаться добавить UIBarButtonItems к этому, я перетащил в UITableViewController, а затем пошел в

Редактор- > Вставить In- > навигационный контроллер

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

Ответ 6

В действительности проблема с xcode. Один трюк, который работал у меня, заключается в том, чтобы добавить кнопку бара в СТРУКТУРУ ПРОСМОТРА ФАЙЛА НА ЛЕВО. Инсталляция добавляется прямо в представление. Надеюсь, он вам поможет.:)

Ответ 7

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

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

введите описание изображения здесь

Ответ 8

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

Ответ 9

Я считаю, что это привидение XCode. Я была такая же проблема. Мне пришлось reset Xcode и перенести размещение вещей на раскадровку, чтобы, наконец, заставить его идти. Он работает сейчас.

Ответ 10

Я думаю, что это ошибка Xcode. В Xcode 8 измените segue в раскадровке перед контроллером просмотра панели вкладок на все его параметры (show detail, present...). Затем вернитесь к show. Попробуйте перетащить элементы панели и изменить плитку. Это работает для меня!

Ответ 11

Вы пытались "очистить" свой проект? Я знаю, что иногда помогает мне (просто перейдите в "Продукт" > "Очистить" ). Или, наоборот, удалите панель навигации и повторите попытку.

Если вы считаете, что это ошибка программирования, не стесняйтесь передавать свой код. Я был бы рад помочь в любом случае.:)

Ответ 12

Вы должны reset xCode IDE. Закройте xCode и напишите приведенные ниже коды на терминале... Он будет работать.

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

Ответ 13

Такая же проблема. У меня был контроллер табличного представления внутри контроллера навигации и много ViewControllers, следующих далее по цепочке. "Элемент навигации" автоматически создавался для контроллера корневого представления FIRST, и я мог бы добавить к нему "элемент кнопки бара" без проблем. С помощью раскадровки перетащите мышкой. Но все. На следующем контроллере просмотра таблиц и дополнительных контроллерах просмотра, даже если они были в первоначальном навигационном контроллере (появилась автоматическая кнопка возврата назад), раскадровка никогда не позволила бы мне добавить элемент кнопки панели.

Решение Wael Showair не работает для меня. Элементы панели "Бар" не отображаются.

Я решил это программно в конце (Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

Отсутствует дополнительный элемент навигации или панель инструментов. Необходим элемент.

Ответ 14

Я тоже сталкивался с одной и той же проблемой. Я смог исправить эту проблему, выбрав опцию контроллера корневого представления, а затем в смоделированной матрице изменил опцию "Верхняя панель" на панель навигации Opaque и смог добавить элемент поверх навигации bar.Hope этот ответ поможет кому-то.

Ответ 15

У меня была такая же проблема в xcode 8. Мне пришлось просто закрыть xcode и снова открыть проект, а затем я смог добавить кнопку панели в корневой контроллер без каких-либо проблем.

Ответ 16

Для XCode 8

Здесь много ответов. Я пробовал некоторые из них, но я не мог этого сделать. Итак, я нашел свое решение, просто выберите свой ViewController, перейти Инспектор атрибутов и изменить Верхнюю панель на Непрозрачную навигационную панель и Boom. Вы увидите панель навигации на своем раскадровке. Вы можете изменить заголовок или добавить какой-либо элемент. Если вы не хотите сохранять Opaque, вы можете изменить стиль на Inferred.

введите описание изображения здесь

Ответ 17

Вместо перетаскивания "Элемент панели кнопок" в "Контроллер навигации" перетащите его в "Контроллер подробных представлений". Когда вы встраиваете детальный вид в "представление навигации", "элемент навигации" будет добавлен в "контроллер детального просмотра". Если вы перетащите "Элемент панели кнопок" справа от элемента навигации, элемент будет включен в "Элементы панели справа"

Ответ 18

В Xcode 10 я просто изменил тип перехода, переходящего к этому новому контроллеру представления, на "Push (устарело)", добавил элемент навигации, как это было разрешено после того, как я сделал этот переключатель. Если вы вернетесь к исходному желаемому типу перехода, элемент навигации останется.

Ответ 19

Как сказал Марк Лайонс, я использовал то же решение.

  • сначала использовал push segue
  • добавил пункт бара
  • вернуться назад, чтобы показать Segue
  • сделанный