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


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.