"Обычный стиль, не поддерживаемый в элементе навигации", с моей настраиваемой кнопкой "Панель"

Я перетаскиваю кнопку Round Rect в положение правой панели Button Button и устанавливаю изображение на кнопку Round Rect. Все работает хорошо, кроме предупреждения "Обычный стиль не поддерживается в навигационном элементе". Даже если я выберу стиль элемента "Кнопка бара" на "Bordered", предупреждение все равно будет. Что с Xcode 4.2? Спасибо заранее!

Ps. Я настроил много элементов батонной кнопки с круглой кнопкой Rect, иногда Xcode 4.2 показывает только одно предупреждение на баре Button Item, несколько раз показывает предупреждения на всех элементах Button.

Ответ 1

Мне удалось удалить эти ошибки, вручную отредактировав файлы раскадровки и найти запись о непристойном стиле = "простая" в элементах кнопки "Бар" в элементе <navigationItem>.

Изменено:

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

To:

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

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

Это может быть потрясающий взлом, и большая проблема заключается в том, что я не стал причиной его или удалил элементы невидимого элемента панели из общего документа. Это было после прохождения всех элементов по одному, и обнаружение некоторых навигационных баров было пустым (без детей) и, вероятно, произошло с большим количеством копий и вставки (cmd + c | v) наследования, а не с использованием дубликата (cmd + d) для создания интерфейса. Хотя причина источника не была вызвана корнем, симптомом было то, что элементы бара не отображались в документе "Контурное представление", которое должно быть исправлено. Поведение интерфейса Builder иногда меня раздражает, а пустой контейнер, где должно быть что-то в контурном представлении, - это запах. Ну, это для меня сейчас. Иногда удаление оскорбительных node и перестроение исправляет самые странные проблемы.

ПРЕДУПРЕЖДЕНИЕ: создайте резервную копию своих раскадровки, прежде чем попробовать этот... контроль версий - ваш друг... Я не несу ответственности, когда ваш раскадровка полностью закрыта и не будет компилироваться. Все, что вы получите, это "Я сказал вам об этом!" Я многому научился несколько раз, но прилежный контроль источника спас меня от головной боли.

EDIT: положить скобки в кодовые блоки

Ответ 2

Если вы нажмете на предупреждение и не перейдете в пункт навигации, выполните следующие действия. (визуальное представление ответа Hunter с более безопасным методом из добавленных комментариев)

В браузере файлов щелкните правой кнопкой мыши раскадровку и выберите Open As Source Code

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

На странице исходного кода найдите "plain" и найдите тот, который прикреплен к элементу навигации.

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

Чтобы получить имя представления, поместите "сцену" в строку поиска и нажмите стрелку назад для поиска первого экземпляра в этом теге над navigationItem

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

Вот название вашей сцены, теперь вы можете изменить вид раскадровки назад на Interface Builder - Storyboard с помощью метода правого щелчка, описанного выше, а затем перейти к выбору сцены в меню сцены и элемента панели внутри нее.

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

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

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

Ответ 3

Я остановил предупреждение о стиле Plain, высунувшись в контуре документа. Это показывало мой пункт навигации и в пределах этого 2 элемента кнопки бара и внутри каждой из них кнопка. Параметр "Нарушение" находился в пункте "Кнопка бара". В своем инспекторе атрибутов я изменил "Стиль" с "Простой" на "Готово", и предупреждение исчезло. Примечание. Я использую XCode 5.

Ответ 4

Если вы используете раскадровку, тогда нажмите предупреждение, и оно должно привести вас к оскорбительному навигационному элементу (у меня было два проблемы, один взял меня там, а другой нет) - измените стиль и очистите проект.

Bar Button Style set to plain

Ответ 5

backBarButtonItem leftBarButtonItem и rightBarButtonItem являются объектами UINavigationItem. В UINavigationItem нет свойства style, поэтому это является причиной предупреждения. Вы должны программировать программные кнопки:

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.

Ответ 6

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

Ответ 7

В моем случае это была обратная стрелка назад, которая была установлена ​​на "Обычная".

Появится сообщение об ошибке со всеми элементами на панели навигации.

Ответ 8

После того, как вы уверены, что у вас есть все кнопки на панели в раскадровке, настроенные на что-либо, кроме простого, убедитесь, что вы выполняете git фиксацию и удаление полученных данных. Я потратил на это время, пытаясь понять, почему проблема не фиксирует себя, и удаление папки с производными данными исправлено для меня.