IB Designables: Не вдалося оновити статус автоматичного макета: Не вдалося завантажити конструктивні елементи із шляху (null)


76

Я бачу цю помилку для XIB. Але все інше компілюється, і, здається, ця помилка не завдає шкоди. Це щось, про що мені потрібно хвилюватися? У чому проблема тут і як би я вирішив це виправити?

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

ОНОВЛЕННЯ: Я оновив cocoapods до останньої версії (0.36.3), і хоча це вирішило проблему для декількох компіляцій, помилка повернулася, і тепер я бачу додаткову помилку:

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


Відповіді:


77

Це відома проблема у CocoaPods. Виправлено у версії 0.36.1 . Просто оновіть свої CocoaPods, а потім додайте конкретний рядок коду у свій файл pod: use_frameworks! після платформи: ios, '7.0'

Тож ваш файл буде виглядати так:

platform :ios, '7.0'

use_frameworks!

/// here will be dependencies etc. ///

оновлено:

Повний перелік кроків, щоб позбутися проблеми раз і назавжди:

  • Закрити проект;
  • Open Terminal App;
  • Оновіть CocoaPods до версії. 0,36,1 або пізнішої версії;
  • Перейдіть до папки проекту в Терміналі;
  • Тип pod update:;
  • Відкрийте свій проект у xCode;
  • Чистий проект;
  • Знову побудуйте проект.

2
Насправді, просто оновлення кокаподів, здавалося, зробило для мене фокус. Я здивований, що cocoapods видав мені помилку в не пов'язаному XIB, але так воно й відбувається ...
Орен,

1
Я беру це назад. Помилка повернулася. Я вніс додаткові зміни, які ви запропонували, і помилка все ще залишається, і тепер я також отримую кілька попереджень про O-link про iOS8
Орен

2
Пробував це кілька разів. не пощастило
Орен

1
Ти маєш рацію. Я посилаюся на TTTAttributedLabel у своєму XIB. Як тільки я видалю, що помилка зникає. Якщо я поверну його назад, помилка повернеться. Я не впевнений, що можу зараз з цим зробити, але принаймні я знаю причину. Спасибі за вашу допомогу!
Орен

1
Я щойно додав "use_frameworks!" і все починає нормально працювати з FSCalender. Дякую
Zulqarnain

32

Провівши деякі дослідження та копання, я можу підтвердити, що ніяк не вирішити цю проблему.

Це помилка Xcode.

Це все. Потрібно почекати оновлення.

Просто перезапустіть Xcode поки.


8
це правда. для мене це не має нічого спільного з стручками какао, це трапляється з моїми власними призначеними IB. пробував усе ...
benjamin.ludwig

2
Яка версія Xcode це була? Я використовую 7.1.0, він все ще є
CalZone

2
Я використовую Xcode 8.0, ця проблема все ще не вирішена.
Statik

4
Конструктор інтерфейсів дуже повільний і глючить. Майже не може бути використаний для дизайну компонентів. Так, це все те ж саме в Xcode 8.0. Я думаю, що одна з найважливіших причин, чому я більше насолоджуюсь розробкою ios, ніж розробкою Android, - це набагато кращий інструмент IDE. Apple зробила дуже погану роботу в своєму інструменті xcode. Стає все гірше і гірше !!!
Bagusflyer

3
Я на Xcode 8.2, і це залишається незмінним через 1,5 року. Неймовірно.
Can Poyrazoğlu

17

Це спрацювало для мене:

  1. видалити похідні дані (налаштування> місця)
  2. перезапустіть Xcode
  3. чистий проект (продукт> чистий)

Це працює! Схоже, скидання кешу DerivedData - це шлях, мені навіть не потрібно було очищати проект.
Apophenia Overload

Так, це зробило це для мене теж.
user1366265

4
Проблема точно повернеться знову. Це помилка Xcode.
Bagusflyer

13

2016 рік - рік, xCode 7.3.1: Я отримав цю помилку. (Використання какао-стручків 1.0, але це не має значення)

ПРИЧИНА: у IB використовувався спеціальний підклас UILabel. задзвонити?

ЕЛЕГАНТНЕ РІШЕННЯ:

1: Підклас TTTAttributedLabel або FXLabel або що завгодно у вас. Використовуйте це в IB.

2: Додайте ці рядки у підкласовий файл .h:

#ifndef IB_DESIGNABLE
#define IB_DESIGNABLE
#endif

@class LabelFromPod;


IB_DESIGNABLE @interface YourLabel : LabelFromPod {
 ...
}

3: тоді я думаю, вам доведеться очистити проект, вийти з xCode, відновити (звичайний протокол паніки xCode), і проблема зникне.

ОНОВЛЕННЯ 2017 xCode 8.2.1: Все погіршується :( Порожня проблема VC: IB навіть не завантажує елементи інтерфейсу для контролерів подання, які мають ці IB_DESIGNABLE. Я не знаю :)


1
Помилки все одно будуть виникати випадково. Вихід з Xcode вирішить проблему.
keithyip

Похвала за ідентифікацію точної проблеми @Jaro. Хоча я додав, що проблема з твердженнями ifndef все ще існує. Допоможуть очищення, вихід, відновлення. але все-таки це помилка в xcode. І яблуко повинно це виправити.
Ashish Pisey

9

Я зіткнувся з тією ж проблемою, використовуючи TTTAttributedLabel, і слідував відповіді Андрія, щоб спробувати це виправити. Збірка була успішною, але після цього здається, що пакети файлів інших модулів pod (TSMessage, SVProgressHUD в моєму випадку) не можуть бути завантажені. Про це також йдеться у дописі блогу Cocoapods, і я не хочу переміщувати ресурси пакета до mainBundle (і я не перевірив, чи це працює).

Тому я вирішив видалити TTTAttributedLabel з підфайлу і просто включити джерело безпосередньо, щоб позбутися цієї помилки. Це працює для мене, і я сподіваюся, що це ще одна відповідь на цю проблему.


Тільки корисна відповідь для мене.
Бісма

1
Я також використовував TTTAttributedLabel. Оскільки обхідний шлях тимчасово змінив клас на UILabel для TTTAttributedLabels, вніс зміни до автоматичного макета, а потім повернув класи назад. Досить надокучливо, але це спрацювало.
Бен Кейн,

7

Можливо, запізнюється, але додавання цих кодів для ініціалізації у мене спрацювало, коли з’явилася ця проблема

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

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

Це вдалося! Чоловіче, я збожеволів, не зумівши позбутися цієї помилки!
livingtech

3

У мене була та ж проблема, що і при використанні користувацького подання з POD на раскадровці.

Виконання наступних дій вирішило проблему для мене

  • Додайте наступний рядок (Щоб перетворити POD в динамічну структуру) на pod use_frameworks!
  • Роби pod update
  • Перезапустіть Xcode

3

В Podfileдодати цей скрипт в кінці і виконується pod installзнову.

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

1

Оновлення cocoapods в Mac за допомогою наступної команди вирішило цю проблему частково для мене:

sudo gem install cocoapods

1

Проблема може полягати в тому, що ви використовували фреймворк або власний клас UILabel. як MarqueLabel або TTTAttributed Label. Розкоментар #use_frameworksу файлі pod. Біжи pod update. Очистіть і відновіть свій проект. Це вирішить вашу проблему.


1

У мене була подібна помилка, коли я користувався Cocoapodsі не міг use_frameworks!. Я закінчив тим, що розгалужив фреймворк, який використовує IBDesignableта IBInspectableі видалив ці ключові слова. Усі налаштування виконуються програмно:

class CardFloatingLabelTextField: SkyFloatingLabelTextField {

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

        self.errorMessage = nil
        self.titleFont = UIFont.systemFont(ofSize: 11)
        self.titleFormatter = { (text: String) in return text }
        self.titleColor = UIColor.channelsColorGrayFootnoteAndCaptions()
        self.selectedTitleColor = UIColor.channelsColorGrayFootnoteAndCaptions()
        self.lineColor = UIColor.channelsColorGrayContentAndLines()
        self.selectedLineColor = UIColor.channelsColorDarkBlue()
        self.lineHeight = 1
        self.selectedLineHeight = 1

    }

}

Це працює і більше не створює помилок у конструкторі інтерфейсів. Проте шкода, що мені довелося зробити цей обхідний шлях.


1

Видаліть те, що є у підфайлі, і просто включіть джерело, щоб вирішити цю проблему.

Це працює для мене!


1

Я зіткнувся з цією проблемою, коли і базовий клас, і дочірній клас згадуються як клас @IBDesignable. Можливо, зверніться до стороннього класу та вашого класу, якщо він успадкований

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.