Interface Builder - Не удалось загрузить конструктивные элементы из пути (null)
У меня есть некоторые настраиваемые элементы управления, которые я создал, и я использую их в новом проекте. Тем не менее, я продолжаю получать ошибки в построителе интерфейса:
Failed to update auto layout status: Failed to load designables from path (null)
или
Failed to render instance of <control>: Failed to load designables from path (null)
Я тестировал элементы управления в другом проекте, и они, похоже, правильно отображаются в построителе интерфейса, но я не могу заставить их работать в текущем проекте. Что вызывает эту ошибку и как я могу ее исправить?
Спасибо заранее...
Ответы
Ответ 1
У меня была такая же проблема. Я использую cocoapods, и есть стручок, который использует условные обозначения. Итак, трюк заключался в том, чтобы добавить "use_frameworks!" в Подфайл. сделать обновление "pod update" повторно открыть проект xcode, и сообщение об ошибке не должно появляться.
Ответ 2
Изменить **
Откройте Xcode (но не открывайте проект) и щелкните по окну (второй справа)
Нажмите "Органайзер" и убедитесь, что вы находитесь в "Проекты", а затем удалите все полученные данные.
Закройте Xcode, а затем снова откройте проект и позвольте Xcode повторно индексировать ваши файлы и посмотреть, устраняет ли это проблему.
Ответ 3
Я запускаю Xcode 7.3 и получил ошибку, чтобы волшебным образом исчезнуть, выполнив следующие шаги, которые, в конце концов, оставили мой проект в точном состоянии, чтобы он выполнял эти шаги (т.е. ):
- Добавить 'use_frameworks!' (без апострофов, конечно) к вашему
podfile
- Откройте окно терминала
- cd в корневой каталог проекта
- Запустите 'pod install' из командной строки
- Удалите 'use_frameworks!' из вашего podfile
- Запустите 'pod install' снова
- Попробуйте снова построить и посмотреть, исправляет ли это
ошибка; он сделал для меня
Похож на один из тех случайных коллажей Xcode, которые мы все видели раньше, особенно когда вы спешите получить что-то еще.
Ответ 4
У меня была такая же проблема в проекте non-CocoaPods с пользовательскими представлениями IBDesignable
. По-видимому, это ошибка Xcode. Шаги в этом ответе помогли мне решить проблему. Короче говоря:
- Закройте Xcode.
- Убейте все процессы с именем
Interface Builder Cocoa Touch Tool
на вашем компьютере.
- Запустите Xcode снова.
Ответ 5
Эта проблема исправлена в последней версии Cocoapods
Чтобы установить, просто запустите:
[sudo] gem install cocoapods --pre
Чтобы исправить ошибку: "не удалось загрузить конструктивные элементы из пути (null)":
use_frameworks!
pod '****'
end
Добавьте use_frameworks!
к вам Подфайл
Найти больше: Живой рендеринг настраиваемого компонента с использованием IB_DESIGNABLE из зависимостей pod
Ответ 6
Проблемы заключались в том, что IB_DESIGNABLE из cocoapods неправильно связаны, когда построитель интерфейсов визуализирует ваши представления.
Тройка use_frameworks!
должна это сделать, но для меня это было просто слишком много усилий для переноса кода.
Мой трюк состоял в подклассе каждого представления IB_DESIGNABLE, которое я использовал в раскадровке, которая поступала прямо из контейнеров. Исправлены ошибки.
Ответ 7
Я не уверен, что это решает вашу проблему, поскольку я не могу воспроизвести ее. Но я думал, что вы все равно можете попробовать.
Во-первых, как отмечали другие, кажется, что у CocoaPods была та же проблема. Я прошел через коммиты, которые внесли свои исправления, но без результата, связанного с вашей настройкой.
Однако я нашел другое связанное сообщение об ошибке в этом вопросе StackOverflow, которое также было связано с тем, что IB не нашел на пути. Я задавался вопросом, может ли их решение помочь вам:
Решением было добавить $(CONFIGURATION_BUILD_DIR)
в целевое поле Build settings
Runpath Search Paths
.
Ответ 8
Там очень удобный трюк, который вы можете сделать для отладки живого рендеринга.
1) Добавьте это расширение в свой проект:
extension UIView {
public func liveDebugLog(message: String) {
#if !(TARGET_OS_IPHONE)
let logPath = "/tmp/XcodeLiveRendering.log"
if !NSFileManager.defaultManager().fileExistsAtPath(logPath) {
NSFileManager.defaultManager().createFileAtPath(logPath, contents: NSData(), attributes: nil)
}
var fileHandle = NSFileHandle(forWritingAtPath: logPath)
fileHandle.seekToEndOfFile()
let date = NSDate()
let bundle = NSBundle(forClass: self.dynamicType)
let application: AnyObject = bundle.objectForInfoDictionaryKey("CFBundleName")
let data = "\(date) \(application) \(message)\n".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
fileHandle.writeData(data)
#endif
}
}
2) Добавьте liveDebugLog(message:)
и поставьте все, что хотите знать.
3) Откройте Terminal.app
и запустите команду open /tmp/XcodeLiveRendering.log
Готово!
Кредиты для Мортен Бёг
Ответ 9
Я не использую CocoaPods, но я использую внутреннюю структуру, содержащую элементы IBDesignable, и также испытывал эту проблему. Я очистил, удалил Derived Data из моего основного проекта и перезапустил Xcode, но, похоже, не исправил его. Чтобы решить эту проблему, мне пришлось перейти в Window > Projects, выбрать проект framework (а не проект, который использовал фреймворк, а скорее сам проект фреймворка) и удалить Derived Data. Итак, полные шаги:
- Меню продуктa > Очистить
- Удерживайте опцию > Меню продуктa > Очистить папку сборки... > Очистить
- Меню "Окно" > "Проекты" > "Мой проект" > "Удалить исходные данные"
- Окно меню > Проекты > Выберите мой основной проект > Удалить производные данные
- Выйти из Xcode
- Перезапустить Xcode
Повторите шаг 3 для любых и всех инфраструктурных проектов с IBDesignables и может вызывать ошибки.
Ответ 10
Я решил эту проблему, обновив модуль pod update, надеюсь, что он сработает для вас.
Ответ 11
Эта ошибка появилась, когда я обновил контейнеры, пока xcode и мой проект были открыты.
Я закрыл xcode. снова выполнил обновление модуля. перезапущен xcode.
Ошибка не появилась снова.
Ответ 12
Я не использовал cocoa-стручки, но получил эту ошибку на контроллере представления, расширяющем импортированные классы. Я получал эту ошибку только при изменении вида StoryBoard на IphoneX, он отлично работал на iPhone 8.
Я изменил настройки проекта с New Build System (Preview) на Standard Build system, затем очистил проект, и ошибка исчезла.
Не знаю почему, но это решило проблему для меня.