Я недавно обновился до Xcode 8, и у меня возникли проблемы с раскадровкой.
Если я открою проект и у меня не откроется раскадровка, он скомпилируется и будет работать нормально. Как только я открываю раскадровку, я получаю несколько ошибок об IB Designables, как показано ниже.
Эти представления являются единственными представлениями, которые используют пользовательские представления TextFieldEffects
и BEMCheckbox
импортированы с помощью Cocoapods.
Ответы:
Вы можете попробовать одно из следующих действий, чтобы выяснить причину:
IBDesignablesAgentCocoaTouch
журналы в этом каталоге:~/Library/Logs/DiagnosticReports
и посмотрите причину.Перейдите в Editor -> Debug Selected View при выборе
@IBDesignable UIView
вашей раскадровки и посмотрите трассировку стека.Удалить папку «Производные данные».
Чистый ваш проект
Shift
+Command
+Alt
+K
.Создайте свой проект
Command
+B
.источник
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
. Я не знал, чтоIBDesignablesAgentCocoaTouch
вызовы процессаinit(frame:)
, а неinit?(coder aDecoder:)
.init(frame:)
в своем подклассеЯ решил проблему, выполнив следующее:
File > Workspace settings
.DerivedData
папки.DerivedData
папку и удалите папку, соответствующую вашему проекту.Editor > Refresh all views
.обновленный
Иногда просто прямо иди на работу
Editor > Refresh all views
. ЕслиRefresh all views
отключено, выйдите из Xcode и попробуйте снова.источник
Я просто удаляю неуспешный вид и нажимаю команду + Z, чтобы отменить удаление. Меня устраивает.
Если позднее редактировать ошибочный вид, ошибка может возникнуть снова, повторите описанные выше действия.
источник
Я столкнулся с этой проблемой в CocoaPod 1.5.0. Решение состоит в том, чтобы переустановить модуль pod (установить модуль снова), как только появится эта ошибка, или вместо этого вы можете использовать CocoaPod 1.4.0. Он отлично работает в 1.4.0 (по крайней мере, для меня.)
Обновить:
Добавьте следующий скрипт в Podfile, помогите мне решить проблему в 1.5.0
ссылка: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
источник
s work for me, you should add
end` до последнего кода.Добавление следующего кода в мой
@IBDesignable
класс добилось цели.источник
UITextView
. (1)init(frame: CGRect, textContainer: NSTextContainer?)
, (2)init?(coder aDecoder: NSCoder)
. Затем восстановить и предупреждение (ошибка) исчезли. Нет даже необходимости чистить папку сборки.Для всех, как я, кто не может найти это
IBDesignablesAgentCocoaTouch
файл или когда при попытке «Отладить выбранные представления» в редакторе появляется ошибка, есть еще один способ отладки этих ошибок «Не удалось отобразить».Откройте приложение «Консоль», на боковой панели выберите свой текущий Mac (он, вероятно, будет выбран автоматически по умолчанию), а затем в строке поиска найдите «IBSceneUpdate» и нажмите Enter.
Таким образом, каждый раз, когда вы получаете ошибку XCode для
IBDesignable
невозможности рендеринга, вы также получаете новую запись «IBSceneUpdate» с более подробной информацией об ошибке.По крайней мере, так я смог отладить свои
IBDesignable
ошибки!источник
Если вы используете файл xib для пользовательского интерфейса. Попробуй это:
Меняться от
Для того, чтобы:
источник
Попробуйте отключить «Использовать варианты признаков» (панель «Идентичность и тип») для любого файла XIB, который может иметься для пользовательских представлений, используемых в вашей раскадровке.
источник
Моя проблема была решена путем удаления папок (которые связаны с этим проектом) из папки производных данных. Вы можете сделать это, щелкнув Файл -> Настройка проекта ->, затем щелкните знак стрелки и /Users/.../Xcode/DerivedData щелкните папку DerivedData, и вы увидите, что в вашем проекте эти папки будут удалены. Выйдите из xcode, чтобы открыть ваш проект, очистите проект с помощью этого шага Product-> clean, а затем создайте проект: Product-> Build. Это решит эту проблему.
источник
Правильный ответ предоставлен @Maria :
Альтернативный способ :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
и просмотрите журнал сбоевисточник
Просто откройте свою раскадровку -> Редактор -> Обновить все представления. Это работа для меня.
источник
Я попытался очистить и запустить проект, не решит эту проблему.
Но Закрыть и возобновить проект сделали.
источник
Когда я отладил это, я обнаружил, что есть некоторые классы, которые модифицируют интерфейс. Обычно это маркированная метка, которая является подклассом UILabel или любого другого подкласса класса UIView и рисует пользовательский интерфейс во время выполнения и сталкивается с механизмом Autolayout. Попробуйте задать фиксированную ширину или высоту для этих пользовательских видов. Если это не решит вашу проблему, попробуйте следующие решения: -
Решение 1: - Раскомментируйте #use_frameworks внутри вашего файла pod.
Решение 2: - Попробуйте удалить производные данные
источник
У меня была та же проблема, и я пришел сюда, чтобы попытаться выяснить, что произошло. Я заметил ответ с самым высоким рейтингом, и сам ответ мне не помог, так как IBDesignable не существовал в папке журнала, и я уже пробовал все другие варианты там, однако в комментариях я заметил, что кто-то говорит о инициализации фрейма.
Я решил попробовать закомментировать мое расширение IBDesignable для UIView, и оно сразу решило проблему. Итак, чтобы исправить это, найдите расширение, вызывающее проблему, и убедитесь, что настроили требуемые начальные единицы, создав класс IBDesignable и предоставив необходимые инициализаторы следующим образом:
ВАЖНО: не забудьте добавить новый класс к элементу, на котором вы используете дизайн.
источник
Столкнулся с той же ошибкой: при настройке UITextField и использовании конструктора интерфейса, ошибка в консоли была -Использование нереализованного инициализатора 'init (frame :)' для класса "CustomField"
Добавлен инициализатор для исправления ошибки
источник
Я столкнулся с этой проблемой после обновления до последней версии XCode. После попытки множественного решения, описанного выше, я только полностью Xcode и затем выключил систему и включил ее, и это работало для меня.
источник
После внесения необходимых изменений измените раскадровку или, в моем случае, файл .xib, чтобы открыть его в «XCode 7», сохранить и закрыть. Это всего лишь мера ограничения пробела для устранения ошибок, но в конечном итоге вам нужно будет их исправить или делать это до тех пор, пока вы больше не сможете это исправить.
источник
В моем случае я использовал библиотеку, которая создавала подклассы
UIView
. Он использовалIB_DESIGNABLE
и пропустил звонок[super awakeFromNib]
. Как только я добавил вызов к этому методу, ошибка исчезла.Я не уверен,
IB_DESIGNABLE
повлиял ли на это тот факт, что это осуществлялось .источник
Это самый простой способ для меня: добавить этот скрипт в свой
Podfile
Podfile:
Источник:
Этот обходной путь для @IBDesignable можно найти здесь: https://github.com/CocoaPods/CocoaPods/issues/5334.
источник