Xcode 10: наш проект приводит к сбою или невозможности визуализации построителя интерфейса. Прекрасно работает, когда раскадровка открывается вне проекта - PullRequest
0 голосов
/ 01 ноября 2018

В последние несколько месяцев у нас были огромные проблемы с конструктором интерфейса Xcode 10 для iOS.

Проблемы возникают только после некоторых операций редактирования. Перезапуск xcode необходим, чтобы заставить их уйти. В некоторых случаях они исчезают при переключении между устройствами разных размеров в раскадровке.

Обнаружены проблемы:

  1. Xcode неожиданно падает при редактировании раскадровки.

  2. Ограничения перестают обновляться. Предупреждения об ограничениях перестают обновляться. (Нет возможности нажать желтую кнопку предупреждения - обновить ограничения).

  3. Вместо моего контроллера просмотра / просмотра отображается «маленький серый квадрат». Нет представлений. Просто пустой серый вид.

  4. Никакие подпредставления не отображаются на контроллере - только серый фон.

  5. Показана ошибка, сообщающая, что Интерфейсный Разработчик потерпел крах, с просьбой просмотреть журналы. На самом деле просмотр журналов XCode - не имеет смысла, потому что это чужой язык ...

Однако мы нашли обходной путь !!

Мы закрываем проект и рабочее пространство. И мы сами открываем раскадровку в XCode. (вне проекта).

Итак, все, что вам нужно сделать, это: убедиться, что вы настроили IBOutlets и IBActions, которые вам нужны в рамках проекта, а затем для работы над настройками макета, просто откройте раскадровку отдельно, с закрытым проектом.

Но теперь возникает вопрос: некоторые настройки в проекте, очевидно, вызывают проблемы с создателем интерфейса и редактированием раскадровок. Как я могу диагностировать проблему дальше и выяснить, какие проблемы проекта вызывают сбой Интерфейсного Разработчика?

Дополнительная информация:

  1. У нас есть ссылка на фреймворк внутри нашего проекта с собственным Bundle ID. У него много раскадровок. Он ссылается на проект приложения в качестве ссылки на подпроект.

  2. Рабочего пространства нет. Только используемые проекты. (Не используются кокоподы)

  3. Наши раскадровки крошечные: только один контроллер на раскадровку. Вся навигация осуществляется через код. (без переходов). Так что сложность раскадровки не проблема.

  4. Мы не используем IBDesignables или какие-либо дополнительные функции.

  5. Мы просто используем ограничения. Варианты черт включены по умолчанию на всех раскадровках, но мы их не используем.

  6. Мы ссылаемся на другие файлы .framework из нашего собственного фреймворка. Некоторые из них - толстые рамки.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Иногда это происходит из-за @IBDesignable на раскадровке / xib, над которым вы работаете. Попробуйте сосредоточиться на представлении @IBDesignable и перейти в редактор-> Отладка выбранных представлений и следовать выводу трассировки стека. Часто это даст вам достаточно информации, чтобы продолжить отладку и выяснить, что именно является причиной проблемы.

Для нашего проекта это класс @IBDesignable, пытающийся использовать что-то, что не инициализировано до тех пор, пока не произойдет время выполнения и не произойдет ошибка подтверждения, отсюда и ошибка.

0 голосов
/ 17 ноября 2018

У меня была похожая проблема при переключении Interface Builder с любого устройства iPhone на любое устройство iPad - Xcode 10 только что рухнул. Переключение между устройствами iPhone было хорошо.

Оказывается, журнал указал проблему с 'setAttributeText' на UILabel. У одного из моих UILabels, для которого установлено значение Attributed (vs. plain), было установлено выравнивание Align Natural "---". Установка Align Center устранила проблему сбоев, и переключение на устройства iPad теперь снова работает нормально.

0 голосов
/ 01 ноября 2018

Имеют те же проблемы для старых проектов, созданных в Xcode 7 или 8. Мое решение состояло в том, чтобы удалить все представления VC и создать снова

...