У меня есть контроллер представления, который является подробным представлением таблицы. Когда вы щелкаете строку таблицы, вы переходите к подробному просмотру. Подробное представление встроено в контроллер навигации, поэтому в левом верхнем углу панели навигации есть кнопка, которая отправляет вас обратно к таблице. Все идет нормально.
Теперь я хочу добавить кнопку редактирования с правой стороны панели навигации, чтобы вы могли редактировать подробное представление. Мой план состоит в том, чтобы модально добавить еще один контроллер представления, который позволит вам редактировать детали элемента. Стандартные вещи.
Однако, когда я пытаюсь перетащить элемент кнопки панели из списка объектов на панель навигации, этого не происходит. Вместо этого, когда я отпускаю кнопку мыши, она оставляет кнопку полосы на контроллере панели вкладок внизу. (Моя схема навигации включает в себя разные вкладки и для каждой вкладки таблицу, подробное представление и т. Д.)
Любой, кто сталкивался с этим раньше, может предложить, что я делаю неправильно, или какой-то обходной путь, чтобы добавить элемент кнопки панели в правую часть экрана навигации. Надо ли добавлять это в код?
Спасибо за любые предложения.
источник
Ответы:
У меня такая же проблема с Xcode6, и я заметил, что UINavigationItem добавляется автоматически для первого ViewController, который вы встраиваете в NavigationController, но для последующих ViewController вам придется добавить его вручную следующим образом:
Теперь ваши кнопки панели будут прикреплены к верхней части сцены.
Обновление Решение по-прежнему работает с XCode 7, но я хотел добавить более наглядную фотографию. На всякий случай, если кто-то не особо знаком со стандартными или техническими названиями, упомянутыми выше. Обратите внимание на красные стрелки справа, они относятся к шагу 1, шагу 2, упомянутому выше. Также обратите внимание на иерархию представлений в левом красном прямоугольнике.
источник
self.navigationItem.rightBarButtonItem = ...
будет работать. Я предполагаю, что UINavigationController на первом виртуальном канале создает его для всех последующих виртуальных каналов, помещенных в стек. Однако, перетаскивая один из них вручную, почему бы вам не получить два элемента UINavigationItem друг над другом? Тот, который вы перетащили вручную, и тот, который уже есть из UINavigationController?Гадкий трюк:
Тогда контент будет доступен для редактирования, и у вас будет нерекомендуемый стиль для перехода.
источник
UIBarButtonItem
контроллера представления в Xcode 7.3 .В контроллере представления вашей раскадровки, вероятно, отсутствует файл
Navigation Item
. Вы можете перетащить один из библиотеки объектов на свой контроллер представления.После этого вы сможете перетаскивать элементы кнопок панели на левую или правую сторону панели навигации.
источник
Я решил это. перетащите «Элемент навигации» в подробное представление. чем вы можете перетащить элемент кнопки панели.
источник
Я исправил эту проблему следующим образом: вместо того, чтобы перетаскивать UINavigationController в раскадровку и пытаться добавить к нему UIBarButtonItems, я перетащил UITableViewController, а затем перешел к
Редактор-> Вставить-> Контроллер навигации
Это дало тот же результат, что и раньше, за исключением того, что я мог без проблем добавить UIBarButtonItems с обеих сторон панели навигации.
источник
На самом деле проблема с xcode. Один трюк, который сработал для меня, - это добавить кнопку панели в ВИД СТРУКТУРЫ ФАЙЛА СЛЕВА, добавляя непосредственно в представление. Надеюсь, это вам поможет. :)
источник
Я думаю, это ошибка. У меня была такая же проблема. Я исправил ее, отключив классы размеров, а затем включив их.
Вы можете отключить и включить классы размеров в документации по построителю интерфейсов.
источник
У меня тоже была эта проблема, закрытие и повторное открытие проекта работало для меня.
источник
Я считаю, что это причуда XCode. Я была такая же проблема. Мне пришлось сбросить Xcode и сместить размещение вещей на раскадровке, чтобы наконец заставить его работать. Теперь работает.
источник
Я думаю, что это ошибка Xcode. В Xcode 8 измените
segue
в раскадровке перед контроллером представления панели вкладок на все его параметры (show detail
,present
...). Затем вернемся кshow
. Попробуйте перетащить элементы кнопок панели и изменить плитку. Меня устраивает!источник
Вы пробовали «очистить» свой проект? Я знаю, что иногда мне это помогает (просто перейдите в «Продукт»> «Очистить»). Или, как вариант, удалите панель навигации и попробуйте еще раз.
Если вы думаете, что это ошибка программирования, не стесняйтесь передавать свой код. Я был бы рад помочь чем смогу. :)
источник
Вы должны сбросить xCode IDE. Закройте xCode и напишите приведенные ниже коды в терминал ... Он будет работать.
источник
Та же проблема. У меня был контроллер табличного представления внутри контроллера навигации, и многие контроллеры представления следовали дальше по цепочке. «Элемент навигации» создавался автоматически для ПЕРВОГО корневого контроллера представления, и я мог без проблем добавить к нему «Элемент кнопки панели». Перетащите через раскадровку. Но это все. В следующем контроллере табличного представления и других контроллерах представления, даже если они находились в пределах исходного контроллера навигации (появилась автоматически созданная кнопка возврата), раскадровка никогда не позволяла мне добавить элемент кнопки панели.
Решение Wael Showair не сработало для меня. Элементы кнопок панели не отображались.
Я решил это программно в итоге (Swift 2.0):
Никаких дополнительных элементов навигации или кнопок панели не требуется.
источник
Я тоже столкнулся с той же проблемой. Я смог решить эту проблему, выбрав параметр контроллера корневого представления, а затем в моделируемой матрице изменил параметр верхней панели на непрозрачную панель навигации и смог добавить элемент поверх панели навигации. этот ответ кому-то поможет.
источник
У меня была такая же проблема в xcode 8. Мне пришлось просто закрыть xcode и снова открыть проект, а затем я смог без каких-либо проблем добавить кнопку панели в корневой контроллер.
источник
Для XCode 8
Здесь есть много ответов. Я пробовал некоторые из них, но не смог. Итак, я нашел свое решение, просто выберите свой
ViewController
, перейдите в раздел Attributes Inspector и измените верхнюю панель на непрозрачную панель навигации и стрелку. Вы увидите панель навигации на раскадровке. Вы можете изменить название или добавить какой-нибудь предмет. Если вы не хотите сохранять непрозрачность, вы можете изменить стиль на « Предполагаемый» .источник
В Xcode 10 я просто изменил тип перехода к этому новому контроллеру представления на «Push (устаревший)», добавил элемент навигации, как это было разрешено после того, как я сделал этот переключатель. Если вы вернетесь к исходному желаемому типу перехода, элемент навигации останется.
источник
Вместо того, чтобы перетаскивать «Элемент кнопки панели» в «Контроллер навигации», перетащите его в «Контроллер детального представления». По мере встраивания подробного представления в «представление навигации» «элемент навигации» будет добавлен в «контроллер подробного представления». Если вы перетащите «Элемент кнопки панели» в правую часть элемента навигации, этот элемент будет включен в «Элементы кнопки правой панели»
источник
как сказал Марк Лайонс, я использовал то же самое решение.
источник
В Xcode 11 вы можете перетащить кнопку на панель навигации, чтобы создать кнопку панели.
источник