Подтвердить что ты не робот

Xcode 8 - IB Designables - не удалось отобразить и обновить состояние автоматического макета, агент потерпел крах

Я недавно обновился до Xcode 8, и у меня возникли проблемы с раскадровкой.

Если я открою проект и у меня не откроется раскадровка, он скомпилируется и будет работать нормально. Как только я открываю раскадровку, я получаю несколько ошибок об IB Designables, как показано ниже.

enter image description here

Эти представления являются единственными представлениями, которые используют настраиваемые представления из TextFieldEffects и BEMCheckbox которые я импортировал с помощью Cocoapods.

4b9b3361

Ответ 1

Вы можете попробовать одно из следующего, чтобы выяснить причину:

  1. IBDesignablesAgentCocoaTouch журналы IBDesignablesAgentCocoaTouch в этом каталоге: ~/Library/Logs/DiagnosticReports и найдите причину.

  2. Перейдите в Editor → Debug Selected View, выбирая @IBDesignable UIView в раскадровке, и просмотрите трассировку стека.

  3. Удалить папку "Производные данные".

    Xcode Preference -> Location -> Derived Data
    /Users/YourMacName/Library/Developer/Xcode/DerivedData
    
  4. Очистите свой проект Shift + Command + Alt + K

  5. Создайте свой проект Command + B

Ответ 2

Я решил проблему, выполнив следующее:

  1. Перейдите в File > Workspace settings.
  2. Нажмите на маленькую стрелку вправо рядом с "Производные данные". Откроется приложение Finder, которое находится в папке DerivedData.
  3. Зайдите в папку DerivedData и удалите папку, соответствующую вашему проекту.
  4. Выйдите из Xcode и снова откройте его.
  5. Очистите свой проект shift command k.
  6. построить свой проект command b.
  7. Откройте раскадровку.
  8. Перейдите в Editor > Refresh all views.

обновленный

Иногда просто перейдите в " Editor > Refresh all views. Если Refresh all views отключен, выйдите из Xcode и попробуйте снова.

Ответ 3

Я просто удаляю неуспешный вид и нажимаю команду + Z, чтобы отменить удаление. Меня устраивает.

Если позднее редактировать ошибочный вид, ошибка может появиться снова, повторите описанные выше действия.

Ответ 4

Я столкнулся с этой проблемой в CocoaPod 1.5.0. Решение состоит в том, чтобы переустановить модуль pod (снова установить модуль pod) после появления этой ошибки, или вместо этого вы можете использовать CocoaPod 1.4.0. Он отлично работает в 1.4.0 (по крайней мере, для меня.)

Обновить:

Добавьте следующий скрипт в Podfile, помогите мне решить проблему в 1.5.0

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings.delete('CODE_SIGNING_ALLOWED')
    config.build_settings.delete('CODE_SIGNING_REQUIRED')
  end
end

ссылка: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911

Ответ 5

Добавление следующего кода в мой класс @IBDesignable.

override init(frame: CGRect) {
    super.init(frame: frame)
}

Ответ 6

Попробуйте отключить "Использовать вариации признаков" (панель "Идентичность и тип" ) для любого xib файла, который у вас может быть для пользовательских представлений, которые используются в вашем раскадровке.

Ответ 7

моя проблема была решена путем удаления папок (связанных с этим проектом) из папки производных данных. вы можете сделать это, нажав Файл → Настройка проекта → затем щелкните значок со стрелкой /Users/.../Xcode/DerivedData щелкните папку DerivedData, вы увидите, что ваш проект с именем folders удаляет их. quit xcode откройте свой проект, очистите проект, используя этот шаг Product- > clean затем выполните проект: Product- > Build Эти проблемы будут устранены.

Ответ 8

Для любого -like me-, который не может найти этот файл IBDesignablesAgentCocoaTouch или при попытке "Отладить выбранные представления" из редактора, получает ошибку, вот еще один способ отладки этих ошибок "Не удалось отобразить".

Откройте приложение "Консоль", на боковой панели выберите свой текущий Mac (он, вероятно, будет выбран автоматически по умолчанию), а затем в строке поиска найдите "IBSceneUpdate" и нажмите Enter. Каждый раз, когда вы получаете сообщение об ошибке XCode для IBDesignable, который не может отобразиться, вы также получаете новую запись "IBSceneUpdate" с более подробной информацией об ошибке. По крайней мере, я смог отладить свои ошибки IBDesignable!

enter image description here

Ответ 9

Если вы используете XIB файл для пользовательского интерфейса. Попробуй это:

Меняться от

Bundle.main.loadNibNamed("UserView", owner: self, options: nil)

Для того, чтобы:

let bundle = Bundle(for: UserView.self) 
bundle.loadNibNamed("UserView", owner: self, options: nil)

Ответ 10

Когда я отлаживал это, я узнал, что есть некоторые классы, которые изменяют пользовательский интерфейс. Обычно marquelabel, который является подклассом UILabel или любым другим классом, подклассифицирует UIView и рисует ui во время выполнения и сталкивается с движком Autolayout. Попробуйте указать фиксированную ширину или высоту для этих пользовательских представлений. Если это не решит вашу проблему, попробуйте следующие решения: -

Решение 1:. Раскомментируйте #use_framework внутри вашего файла подкачки.

Решение 2: - Попробуйте удалить производные данные

  • Закрыть окно редактора вашего Xcode и выйти из симулятора →
  • Перейдите в Настройки Xcode → Местоположение →
  • Нажмите маленькую серо-стрелку, показывающую путь к производным данным →
  • Выберите свой проект →
  • Удалить все папки внутри →
  • Закройте Xcode и снова откройте

Ответ 11

Просто откройте свою раскадровку → Редактор → Обновить все представления. Это работа для меня.

Ответ 12

Я попытался очистить и запустить проект, не решит эту проблему.

Но закрыть и вновь открыть проект сделал.

Ответ 13

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

Я решил попробовать закомментировать мое расширение IBDesignable для UIView, и оно сразу решило проблему. Итак, чтобы исправить это, найдите расширение, вызывающее проблему, и убедитесь, что настроили требуемые начальные единицы, создав класс IBDesignable и предоставив необходимые инициализаторы следующим образом:

@IBDesignable class RoundedView: UIView {

override init(frame: CGRect) {
    super.init(frame: frame)
    sharedInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    sharedInit()
}

override func prepareForInterfaceBuilder() {
    super.prepareForInterfaceBuilder()
    sharedInit()
}

func sharedInit() {
}
}

ВАЖНО: не забудьте добавить новый класс к элементу, на котором вы используете дизайн.

Ответ 14

Столкнулся с той же ошибкой: при настройке UITextField и использовании конструктора интерфейса, ошибка в консоли была -Use не реализованного инициализатора 'init (frame :)' для класса "CustomField"

Добавлен инициализатор для исправления ошибки

Ответ 15

Я столкнулся с этой проблемой после обновления до последней версии XCode. После попытки многократного решения, описанного выше, я только вполне Xcode и затем выключил систему и включил ее, и это работало для меня.

Ответ 16

После внесения необходимых изменений измените раскадровку или в моем случае .xib, чтобы открыть в "XCode 7", сохранить и закрыть. Это просто мера остановки, чтобы устранить ошибки, но в конечном итоге вам нужно будет исправить их или сделать это, пока вы больше не сможете.

Ответ 17

В моем случае мне пришлось удалить некоторые свойства, помеченные @IBInspectable в ViewController, который был @IBDesignable. Это решило проблему.

Ответ 18

В моем случае я использовал библиотеку, которая была подклассом UIView. Он использовал IB_DESIGNABLE и пропускал вызов [super awakeFromNib]. Как только я добавил вызов к этому методу, ошибка исчезла.

Я не уверен, повлиял ли на это тот факт, что он реализовывал IB_DESIGNABLE.

Ответ 19

Попробовав все решения, такие как clean & build... Это работает для меня.

Refresh all view