Предупреждение о раскадровке Xcode: привязка объектов привязки, отключенных в текущей конфигурации. Отключите это ограничение в текущей конфигурации
Это предупреждение происходит в Xcode 6.1. У кого-нибудь есть идеи, что означает это предупреждение и что с ним будет? Большое спасибо!
Ниже приведен снимок экрана с предупреждениями, открытыми в исходном коде "
![enter image description here]()
Как определить, какое ограничение вызывает предупреждение? Xcode не сообщает вам, какое ограничение является проблемой.
![введите описание изображения здесь]()
Ответы
Ответ 1
Это предупреждение может быть раздражающим и происходит с Xcode 6.1.1. Основная проблема заключается в том, что вы не можете легко найти ссылку, нажав на предупреждение. Я предполагаю, что это ошибка, и она будет исправлена рано или поздно.
Однако в то же время вы можете использовать это небольшое обходное решение:
Шаг 1: Обнаружение раздражающего предупреждения 😱
![Annoying warning]()
Шаг 2: Вправо/Ctrl-Нажмите на предупреждение, выберите Reveal in Log
😨
![enter image description here]()
Шаг 3: Полюбуйтесь красотой следующего фрагмента журнала:
... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...
Хммм... Что это...?
![interesting]()
Шаг 4: Позвольте бросить это в панель поиска проекта... 😐
![search]()
😮 Да, вы догадались, правильно. Нажмите на нее.
Шаг 5: 😁 OMG! Наслаждайтесь несколькими дополнительными минутами производительности, пока Apple не устранит эту неприятную ошибку. 😎
![wheeee]()
В течение 2016...
- Если вы не можете получить его с помощью "Reveal in Log", покажите навигатор отчетов. (Это самая правая вкладка в крайнем левом столбце.) Входите в результаты сборки там. Это покажет журнал сборки, включая идентификатор ограничения. вежливость buildsucceeded
![введите описание изображения здесь]()
![введите описание изображения здесь]()
-
Обратите внимание, что для Xcode 5/2016, досадно, вам нужно выйти и перезапустить Xcode, чтобы в некоторых случаях удалить это предупреждение.
-
Обратите внимание, что сбивчиво, одна и та же ошибка может быть вызвана несвязанной проблемой (это, кажется, ошибка Apple или плохое использование языка ошибок): если у вас есть элементы IBInspectable
и произойдет с переименуйте их в свои файлы Swift. Xcode не удаляет старое имя UserDefinedRuntimeAttributes для вас. Просто нажмите "Identity Inspector" (элемент 3 на правой панели) и удалите элементы dud.
В течение 2017...
- Еще одна общая, и даже более простая причина проблемы. Если вы столкнулись с un-Install элементом: с момента написания очень просто Xcode не знает, чтобы автоматически также удалять любые ограничения, которые приводят к этому элементу. Достаточно просто взглянуть на любые не установленные элементы и на все его ограничения просто пометить их не установленными. (Или просто, возможно, просто временно удалите не установленный элемент в целом, чтобы узнать, есть ли эта проблема.)
Ответ 2
Это сообщение запускается, когда вы дезактивировали представление в своем раскадровке, но не дезактивировали ограничения, основанные на этом представлении.
Например, вы дезактивировали кнопку, но у вас все еще есть некоторые ограничения, связанные с этой кнопкой. Это может быть внутреннее ограничение, например, высота или ширина, или относительное ограничение, такое как расстояние от другого представления.
Вам нужно отключить все ограничения, ссылающиеся на представление, и вам нужно сделать это вручную. Xcode здесь чрезмерно консервативен и не сделает этого за вас.
Ответ 3
Это решение работает для меня.
Поскольку я скопировал несколько элементов из проекта, который я разработал в Xcode 5, в Xcode 6, а раскадровка в Xcode 6 поддерживает несколько макетов, для каждого ограничения мне нужно установить его в текущей конфигурации.
Например, я использую "Compact Width | Regular Height", для ограничения, которое мне нужно установить, как показано ниже:
![enter image description here]()
После того, как я проверил и установил все сотни ограничений в моих проектах, очистив и создав, предупреждения окончательно исчезнут.
Ответ 4
Просто хотел добавить свой случай, как эта ошибка произошла для меня: в моем случае я хотел удалить текстовое поле с помощью "Cmd + Backspace". Я сделал это прямо в Tree-View Scene-Builder:
![введите описание изображения здесь]()
Вы можете видеть, что поле "Отсрочка" выделено серым цветом.
Итак, это было легко обнаружено для меня. Вы можете просто просто удалить
поле, выбрав:
Изменить-Удалить из меню
Удивительно - это действительно удаляет поле (включая ограничения).
Возможно, это помогает кому-то легко найти причину этого раздражающего предупреждения...
Ответ 5
Расширенное пояснение
Ничего плохого в других ответах. Я просто хотел обратить внимание на формулировку в исходном предупреждении и определить пару прецедентов, где это может отображаться в одном рабочем процессе.
![constraint-warning]()
Ограничение привязки элементов, отключенных в текущей конфигурации.
Значение того, что какой-либо элемент (обычно элемент управления или пользовательский вид, который обычно отображается), указанный в одном или нескольких ограничениях, отключен (отключен или установлен флажок "установлен" не установлен). Если, например, вы решите, что хотите переместить элемент управления или просмотр в своем раскадровке вне основного вида (или вы можете иногда видеть, когда делаете что-то интересное в классах размера), тогда вы можете увидеть это предупреждение, если у элемента управления есть ограничения, привязанные к нему,
![uninstalled-control]()
Наряду с рекомендуемым решением:
Отключите это ограничение в текущей конфигурации.
Два подхода к исправлению
Структура документа
Визуально вы можете открыть схему документа в своем раскадровке и искать скрытые ограничения, которые ссылаются на ваш элемент управления/просмотр, сидящий за пределами основного вида (расширьте контур, щелкните ограничение и просмотрите инспектор атрибутов, быстро просмотрите). Затем удалите ограничение из этого контекста (класс размера). Например, в моем случае я просто держу элемент управления до тех пор, пока не решит позже, где его представить, поэтому я решил полностью удалить ограничение на нарушение до более позднего времени. Но в классе размера я просто удалю ограничение из текущего контекста, используя установленный флажок в инспекторе атрибутов.
Log Navigator/Find Tool
Можно также продолжать использовать Log Navigator для поиска контроля проблемы с помощью уникального идентификатора, данного каждому объекту в раскадровке. В журнале это будет непосредственно перед желтым выделенным текстом и обычно принимает форму, как показано в моем примере выше: jvj-mY-DHf
Используя идентификатор, вы можете использовать инструмент поиска в Xcode, чтобы найти и удалить (полностью) или удалить (для текущего контекста) нарушающее ограничение.
![log-navigator]()
Если вы любите Xml и его простоту, вы также можете просто открыть раскадровку в качестве исходного кода и найти непоправимый уникальный идентификатор и удалить соответствующий блок xml.
Ответ 6
Одна из причин, по которой это может произойти, состоит в том, что вы выбрали класс размера, несовместимый с вашими ограничениями (wAny hAny
- обычный случай). В этом случае просто выберите другой класс размера в Interface Builder, и вы закончите.
Ответ 7
Для меня это произойдет, если я установил объект для нового объекта (не для просмотра) с параметром "Ограничение на поля", который не отмечен галочкой. Проблема решена с отметкой опции (которая по умолчанию).
Ответ 8
Я думал, что это остается постоянным ограничением из-за другого ответа, однако это было связано с "выходом", который я все еще имел для элемента, который я удалил раньше. Что делать:
- Выберите свой ViewController
- Нажмите на значок "outlet" в правом верхнем углу.
- Просмотрите свои магазины и тщательно удалите все, что вам не нужно.
В худшем случае вы удаляете все свои торговые точки и снова подключаете их снова. Дело решено!
Ответ 9
Как упоминалось и хорошо ориентировано в ответе @BadCat,
Я последовал за ступенями и еще один шаг, который я осмелился принять!
Шаги для переноса после последнего шага ответа BadCats:
Шаг 1:
Я выбрал ограничение в построителе интерфейса, а затем помню, для чего он предназначен, а затем удалил его.
Шаг 2
Постройте проект XCode, и он покажет, что количество предупреждений увеличивается. Это потому, что вы удалили ограничение, которое нужно хорошо компилировать. Итак, перейдите на 3-й шаг!
Шаг 3
Повторно добавьте ограничение, которое вы имели в виду (тот, который вы удалили).
И снова заново постройте его!
Для меня предупреждения ушли просто, делая это!
Думаю, это сработает для некоторых людей!
Причина:
Как я мог понять проблему, вызвавшую это предупреждение, у меня был ярлык, связанный с IBOutlet, но его имя начиналось с большой буквы. Поэтому я переименовал его с помощью простого письма в ViewController и пришел, чтобы изменить его в IB. Я удалил прошлый IBOutlet и пошел, чтобы подключить его к новому переименованному имени свойства и подключенному. Затем я заметил, что появилось новое предупреждение.
Сначала я попробовал следующий answer в этом потоке, но это не помогло!
Ура!
Ответ 10
Мое дело - выбрать ярлык, а затем нажать Ctrl + X, он будет отключен, но я ничего не делаю с ним. Когда я построю, он покажет предупреждение.
Решение: удалите ярлык или удалите выбранный элемент управления + X для маркировки.
Ответ 11
Я удаляю все эти элементы пользовательского интерфейса, включая их ограничения, и снова добавляю их, эти предупреждения просто исчезают. Во всяком случае, это худший, но полезный способ решить эту проблему.
Ответ 12
Что сработало для меня (и я не знаю, почему) заключается в том, чтобы отключить "Использовать вариации признаков" , затем выполнить чистку, а затем снова включить их. В следующей сборке не было предупреждений.
Чтобы отключить "Использовать вариации признаков" , просто выберите свою раскадровку в Навигаторе проектов, а затем выберите "Инспектор файлов".
![введите описание изображения здесь]()
Затем просто снимите флажок "Использовать вариации признаков" , выполните очистку, нажав Shift-CMD K, а затем снова включите вариации свойств, если вы хотите их использовать.
![введите описание изображения здесь]()
Ответ 13
У меня возникла проблема с представлением стека. Удаление ограничений и их повторное добавление не помогли. Очистка и перестройка не помогли.
Для меня решение состояло в том, чтобы создать совершенно новый объект представления стека.
Затем переместите все элементы из представления старого стека в новое представление стека.
Удаление старого представления стека устраняет проблему.