xcode / раскадровка: не вдається перетягнути кнопку панелі на панель інструментів вгорі


99

У мене є контролер перегляду, який є детальним поданням таблиці. Коли ви натискаєте на рядок таблиці, це перейде до перегляду деталей. Детальний вигляд вбудований у контролер навігації таким чином, що в лівій верхній частині панелі навігації є кнопка, яка повертає вас назад до таблиці. Все йде нормально.

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

Однак, коли я спробую перетягнути елемент кнопки панелі зі списку об'єктів на панель навігації, вона не сприймає. Натомість, коли я відпускаю кнопку миші, вона залишає панель кнопки на контролері панелі вкладок внизу. (Моя схема навігації включає різні вкладки і для кожної вкладки таблицю, подання деталей тощо).

Будь-хто перебігає це раніше і може підказати, що я роблю неправильно, або якийсь спосіб вирішити, щоб додати елемент панелі кнопок у правій частині навігаційного екрана. Чи потрібно його додати в код?

Дякуємо за будь-які пропозиції.


Перевірте наступний підручник brianflove.com/2012/10/01/…
casillas

Мені вдалося додати кнопку за допомогою self.navigationItem.rightBarButtonItem = self.editButtonItem; і створив новий editvc у раскадровці, проте я не впевнений, як створити segue. Неможливо зробити це в раскадровці, оскільки кнопка редагування не видно, тому я думаю, що вона повинна бути в коді. спробуємо підготуватиспілку?
user1904273

Якщо вам допомогла одна з відповідей, ви повинні прийняти це :)

Відповіді:


157

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

  1. У бібліотеці Об'єктів знайдіть елемент навігації, а потім перетягніть його до свого другого ViewController на дошці розкадрування.
  2. У бібліотеці "Об'єкти" знайдіть пункт "Кнопка панелі", а потім перетягніть на неї елемент навігації, який ви створили на попередньому кроці.

Тепер у вас будуть кнопки "Бар", які тримаються на вершині сцени.

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


2
Так, це зробило це для мене. Я думаю, що це правильна відповідь, XCode, здається, не додає елемент навігації до наступних ViewControllers.
Джеремі Чоне

це правильно, але червона стрілка на зображенні повинна переходити від елемента панелі кнопки в бібліотеці об'єктів аж до лівого червоного поля.
маль

Ви можете опустити його на полотно, а також вказати червоною стрілкою, або ви можете опустити його в контур документа, як ви запропонували. Це не має значення
Wael Showair

Радий, що чортів, я знайшов цю відповідь, тому що вона чудово працює - я просто здивований, чому UINavigationItem вже не існує на Дошці розгортки? Це, очевидно, там під час виконання, тому що код self.navigationItem.rightBarButtonItem = ...буде працювати. Я здогадуюсь, що UINavigationController на першому ВК інстанціює його для всіх наступних ВК, висунутих на стек. Однак, перетягнувши його вручну, чому б ви не закінчилися двома UINavigationItems один на одного? Той, який ви перетягували вручну, і той, який вже є з UINavigationController?
Джеймс Тумі

70

Неприємний трюк:

  1. Змініть свій сейф, щоб натиснути.
  2. Встановіть потрібний вам вміст
  3. Поверніться, щоб показати

Тоді вміст можна буде редагувати, і у вас є непридатний стиль для segue.


Людина, така потворна. Але це працює UIBarButtonItemна контролері перегляду в Xcode 7.3 .
mikeho

OMG, він все ще працює в XCode 8.2.1. Коли це буде виправлено? Ніколи, напевно,
Діма Ростопіра,

Це єдиний спосіб, який я знайшов, не додаючи його за кодом.
Джошуа

О боже ... Дякую (у)
Насір Хан

Я не можу повірити, що ця помилка все ще залишається тут після більш ніж 2 років
Каріоні

33

Вірогідний контролер подання вашої розкадрівки, ймовірно, не містить Navigation Item. Ви можете перетягнути його з бібліотеки Об'єктів та опустити його на контролер перегляду.

Потім ви зможете перетягувати елементи кнопки панелі ліворуч або праворуч на панель навігації.


1
це спрацювало, але я вважаю, що це робилося автоматично, поки у вас був натискання на контролер
aryaxt

Це має бути правильна відповідь. Решта мені здається рубати
МК Юнг

23

я вирішив це. перетягніть "Елемент навігації" до перегляду деталей. ніж ви можете перетягнути в пункт "Барна кнопка".


8

Я вирішив цю проблему, замість того, щоб перетягнути UINavigationController у дошку розкадрувань і намагатися додати до цього UIBarButtonItems, я перетягнув у UITableViewController, а потім перейшов до

Редактор-> Вставити в-> Контролер навігації

Це дало такий же результат, як і раніше, за винятком того, що я можу додати UIBarButtonItems до обох сторін навігаційної панелі без проблем.


Ви повинні піти вгору !!
Він

5

Його насправді проблема xcode. Один трюк, який працював для мене, - це додати кнопку панелі у СТРУКТУРУ ФАЙЛУ ПОГЛЯДУ НА ЛІВО. Вставлено додавання безпосередньо на подання. Сподіваюся, це допоможе вам. :)


Це працює! Я думаю, що це рішення, поки Apple виправить помилку з Xcode 8.2
Арджун Калідас,

5

Я думаю, що це помилка. У мене була така ж проблема. Я вирішив цю проблему, відключивши класи розмірів, а потім увімкніть її.

Ви можете вимкнути та включити класи розмірів у док.

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


4

У мене також була ця проблема, закрити і знову відкрити проект, який працював на мене.


3

Я вважаю, що це химерність XCode. У мене було те саме питання. Мені довелося скинути Xcode і змінити розміщення речей на табло, щоб нарешті змусити його працювати. Зараз це працює.


3

Я думаю, що це помилка Xcode. У Xcode 8 змініть segueвставну таблицю перед контролером перегляду панелі вкладок на всі її параметри ( show detail, present...). Потім повернутися до show. Спробуйте перетягнути елементи кнопки панелі та змінити плитку. Це працює для мене!


1

Чи спробували ви «очистити» свій проект? Я знаю, що мені допомагає іноді (просто перейдіть до "Продукт"> "Очистити"). Або, альтернативно, видаліть панель навігації та спробуйте ще раз.

Якщо ви думаєте, що це помилка програмування, сміливо передайте свій код. Я був би радий допомогти будь-яким способом. :)


1

Ви повинні скинути ID ID xCode. Закрийте 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

1

Те саме питання. У мене був контролер настільного перегляду всередині навігаційного контролера і багато ViewControllers, що йшли далі по ланцюгу. "Елемент навігації" автоматично створювався для ПЕРШОГО коректора перегляду кореня, і я міг до цього додати "Елемент кнопки панелі" без проблем. Перетягніть і перетягніть панель розгортки Але це все. На наступному контролері подання таблиці та на подальших контролерах перегляду, навіть якщо вони знаходилися в межах початкового контролера навігації (з'явилася автоматична кнопка повернення назад).

Рішення Wael Showair не спрацювало для мене. Елементи панелі кнопок не відображатимуться.

Я вирішив це програмно врешті-решт (Swift 2.0):

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

Не потрібні додаткові елементи навігації або панелі кнопки.


1

Я занадто стикався з тією самою проблемою. Мені вдалося виправити цю проблему, вибравши опцію контролера кореневого виду, а потім у імітаційній матриці змінив параметр Верхня панель на Непрозору навігаційну панель і зміг додати елемент поверх панелі навігації. ця відповідь комусь допоможе.


1

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


1

Для XCode 8

Тут є багато відповідей. Я спробував деякі з них, але мені не вдалося. Тож я знайшов своє рішення, просто виберіть свій ViewController, перейдіть до розділу « Атрибути інспектора» та змініть верхню панель на непрозору навігаційну панель та стрілу. Ви побачите панель навігації на вашій дошці. Ви можете змінити назву або додати якийсь елемент. Якщо ви не хочете зберігати Opaque, ви можете змінити стиль на Inferred .

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


1

У Xcode 10 я щойно змінив тип segue, що перейшов до цього нового контролера перегляду, на "Push (застарілий)", додав елемент навігації, як це було дозволено після переключення. Якщо ви перейдете до потрібного типу спочатку, навігаційний елемент залишиться.


0

Замість того, щоб перетягнути "Елемент кнопки панелі" на "Контролер навігації", перетягніть його до "Контролера детального перегляду". Коли ви вбудовуєте детальний вигляд у "Перегляд навігації", "Елемент навігації" буде доданий до "Контролера детального перегляду". Якщо ви перетягнете "Елемент кнопки смуги" в праву частину елемента навігації, елемент буде включено до "Елементи кнопки правої панелі".


0

як сказав Марк Лайонс, я застосував те саме рішення.

  • спочатку використовував push segue
  • додано елемент рядка
  • повернутися назад, щоб показати segue
  • зроблено

0

У Xcode 11 ви можете перетягнути кнопку до панелі навігації, щоб створити свою панель.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.