Попередження "Звичайний стиль не підтримується в елементі навігації" з моїм індивідуальним елементом кнопки панелі


88

Я перетягую круглу пряму кнопку в положення правого елемента кнопки панелі та встановлюю зображення на кнопку круглої прямої. Все працює добре, крім попередження "Звичайний стиль не підтримується в елементі навігації". Навіть якщо я вибрав стиль елемента кнопки «Стрічка» на «Облямований», попередження все одно буде там. У чому проблема з Xcode 4.2? Спасибі заздалегідь!

Ps. Я налаштував багато елементів кнопок із кнопкою з круглою прямою кнопкою, іноді Xcode 4.2 показує лише одне попередження для елемента з кнопочкою, інколи - попередження щодо всіх елементів з кнопочками.


1
Про це я написав допис у блозі: blog.mosheberman.com/…
Моше,

Не додайте кнопки, додайте елементи кнопок на панелі. Це була моя помилка.
Даніель Спрінгер

Відповіді:


135

Мені вдалося видалити ці помилки, вручну відредагувавши файли розкадровки, і знайти образливий запис style = "plain" у елементах кнопки "Bar Bar" <navigationItem>.

Змінено з:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">

Кому:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">

Це очистило попередження ... правильно чи неправильно.

Це може бути приголомшливий злом, і тим більше занепокоєння полягає в тому, що я не спричинив це або видалив елементи невидимих ​​панелей із загального документа. Це було після перегляду всіх елементів по одному та виявлення деяких навігаційних панелей порожніми (без дітей) і, ймовірно, це сталося з великою кількістю спадщини копіювання та вставлення (cmd + c | v) і без використання дублікатів (cmd + d) для побудови інтерфейсу. Незважаючи на те, що джерельна причина не була корінною, симптомом було те, що елементи стовпчиків не відображалися в документі "контурний вигляд", який слід виправити. Поведінка Interface Builder мені часом здається тонкою, і порожній контейнер, де має бути щось у вигляді контуру, - це запах. Ну це мені зараз. Іноді видалення вузла-порушника та відновлення виправляє найдивніші проблеми.

ПОПЕРЕДЖЕННЯ: створіть резервну копію своїх розкадрувань перед тим, як спробувати це ... контроль версій - це ваш друг ... Я не несу відповідальності, коли ваша розкадровка повністю оброблена і не компілюється. Все, що ви отримаєте, - це "Я вам так сказав!" Кілька разів я навчився важким способом, але старанний контроль джерела врятував мені головний біль.

РЕДАКТУВАТИ: розмістити дужки в блоках коду


24
оберіть barbuttonitem у конструкторі інтерфейсу, відкрийте панель атрибутів праворуч і, змінивши стиль елемента кнопки панелі на «Облямований», застосували ту саму різницю до файлу розкадрування. так це повинно бути безпечним.
пюре

Дякую за цю пораду @mash, те, як я це зробив, було жахливо скоєне потенційним болем і стражданням.
Hunter-Orionnoir

@ SpaceDog2 Дякуємо за увагу. Я ще не модернізував, тому не можу додати жодного підтвердження. У будь-якому випадку я був би дуже обережним із цим методом. Я знаю, що це допомогло багатьом людям дотепер. З часом ми побачимо, чи не припинить вона допомагати.
Хантер-Оріонуар

5
Це рішення для мене ідеально працювало в Xcode 7.1. Крім того, замість безпосереднього редагування вихідного коду, ви можете змінити це в самій розкадровці (перемикаючи стиль із Звичайний на Облямований), і це має точно такий самий результат, як просто ручне видалення style="plain"з вихідного коду розкадровки. Отже, мені ця пропозиція від Хантера видається слушною.
Ерік ван дер Нойт,

Перевірте відповідь dstudeba теж, я навіть не знав, що він описав, можливо. може врятувати кожному біль і страждання від редагування файлу вручну. Джерело контролю - це ваші друзі, будьте в безпеці всі. ;)
Hunter-Orionnoir

31

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

У браузері файлів клацніть правою кнопкою миші на розкадруванні та виберіть Open As Source Code

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

На вихідній кодовій сторінці знайдіть "звичайний" і знайдіть той, що прикріплений до елемента навігації.

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

Для того, щоб отримати ім'я View, поставив «сцену» в рядку пошуку і натисніть на стрілку назад пошуку для пошуку першої інстанції на цій мітці вищеnavigationItem

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

Ось назва вашої сцени, тепер ви можете змінити вигляд раскадровки Interface Builder - Storyboardза допомогою методу правої клавіші миші, описаного вище, а потім перейти до вибору сцени в меню сцени та елемента панелі всередині неї.

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

Перейдіть до інспектора атрибутів і змініть стиль з PlainнаBordered

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


1
Класно. Я точно спробую це наступного разу, коли це станеться.
Hunter-Orionnoir

13

Я зупинив попередження про звичайний стиль, поглянувши навколо «Контур документа». Це показувало мій елемент навігації, і в межах цих 2 елементів панелі кнопок, і в межах кожного з них кнопки. Образливий параметр був на пункті кнопки. В інспекторі його атрибутів я змінив стиль із Звичайний на Готовий, і попередження зникло. Примітка. Я використовую XCode 5.


8

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

Стиль кнопки кнопок встановлений як звичайний


У цій проблемі вище це насправді мене нікуди не привело. Я думаю, що це основний момент у цій конкретній проблемі, пункт взагалі відсутній у навігаторі, але відповідь dstudeba має цікавий підхід, будьте цікаві, якщо відкриття розкадровки по-іншому допоможе людям.
Hunter-Orionnoir

Це найбільш відповідна відповідь. Я змінив стиль на Bordered.
Андрій

6

backBarButtonItem leftBarButtonItemі rightBarButtonItemє UINavigationItemоб’єктами. Тут немає styleмайна, UINavigationItemтому це є причиною попередження. Ви повинні встановити barButtons програмно:

iOS 4:  

UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect];
 [bt setFrame:YourFrame];
 //[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal];
 [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
 UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
 self.navigationItem.leftBarButtonItem=leftButton;

Для iOS 5+:

Прочитайте розділ "Налаштування зовнішнього вигляду" посилання на UIBarButtonItem .


3
У мене є успадкований проект з великою кількістю контролерів і кнопок перегляду. Я не можу намовити XCode сказати мені, яка кнопка викликає попередження. Будь-які підказки? Дякую!
Olie

Можливо, прокрутіть ваші контролери перегляду та "знайдіть" UIBarButtonItenStyle. Зазвичай це властивість неправильно встановлена
TimWhiting

1

На панелі навігації спробуйте використовувати UIBarButtonItem замість кнопки Round rect та встановіть для нього зображення.


але це стиль UIBarButtonItem - це не те, що мені потрібно.
lu yuan

1

У моєму випадку це було зображення стрілки назад, яке було встановлено на "Рівнина".

Здається, повідомлення про помилку стосується всіх елементів на панелі навігації.


0

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

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