Не удалось отобразить экземпляр IB Designables
У меня есть цель-C и Swift смешанная динамическая структура. И смешанная структура была связана с двумя чистыми динамическими структурами Objective-C.
когда я пытался пометить любой класс в смешанной структуре с IB Designable и использовать этот класс в раскадровке или nib, Xcode всегда говорит, что экземпляр его не удалось отобразить.
и там было сообщение об ошибке:
IB Designables: не удалось отобразить экземпляр WZUITokenField: dlopen (WZUIKit.framework, 1): Библиотека не загружена: /Library/Frameworks/WZFoundation.рамки/WZFoundation Ссылка из: WZUIKit.рамки Причина: изображение не найдено
IB Designables: не удалось обновить статус автоматической компоновки: dlopen (WZUIKit.framework, 1): Библиотека не загружена: @rpath/WZFoundation.рамки/WZFoundation Ссылка из: WZUIKit.рамки Причина: изображение не найдено
фреймворк WZUIKit является объективным-C и Swift смешанным рамки и WZFoundation-это чистая цель-C.
плюс, все эти sutff работают на любом устройстве или симуляторе.
11 ответов:
наконец, я решил эту проблему путем добавления
$(CONFIGURATION_BUILD_DIR)в настройках сборки цели' и делайRefresh All Views; подождите, пока сборка будет завершена, и ошибки должны исчезнутькредит @Mojtaba
Если у вас такая же проблема с созданием приложения для Mac, добавьте
@loader_path/../FrameworksдоRunpath Search Pathsрешить это для меня.
для меня это работает, чтобы закрыть xcode и снова открыть его. Никаких ошибок после этого. Спасибо.
у меня была такая же проблема в Xcode 6.4, добавление тестового целевого членства в раскадровку исправило эти ошибки для меня.
также моя цель испытаний
@loader_path/Frameworksустановить вRunpath Search Pathsдля тестовой цели, а не в исходной цели.
интересные.
в моем проекте iOS что-то переопределило
Runpath Search Pathsполе в моей цели. Это выглядело так:LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";я попробовал его решение добавлять
$(CONFIGURATION_BUILD_DIR)но это не сработало для меня. Поскольку он не работал, по привычке я просто удалил запись конфигурации (возвращаясь к значениям по умолчанию проекта). Когда я это сделал, он перезагрузился это:LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'который, если я копаюсь в своих файлах xcconfig, кажется, исходит от Cocoapods.
кажется, то же самое, что и Алекс, что
@loader_pathэто ключ, но это немного другой путь на iOS, чем это Mac OS X.
Я только что выяснил еще одну причину в моем случае:
когда я использовал "редактор - > отладка выбранных представлений", я увидел, что он разбился, потому что я использовал CoreGraphics для создания изображения и использования его в качестве фонового изображения для кнопки:
class func imageWithColor(color: UIColor, size: CGSize) -> UIImage { let rect = CGRectMake(0.0, 0.0, size.width, size.height); UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0); let context = UIGraphicsGetCurrentContext(); // It's alraedy nil here :( CGContextSetFillColorWithColor(context, color.CGColor); CGContextFillRect(context, rect); let image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }причина просто в том, что размер (0.0, 0.0). Почему? Я звоню
super.setBackgroundImage(UIImage.imageWithColor(bgColor, size: self.bounds.size), forState: .Normal)но в IB self.границы.размер все равно 0 на данный момент! Поэтому я изменил одну строку:
let rect = CGRectMake(0.0, 0.0, max(size.width, 1.0), max(size.height, 1.0));и теперь он работает :)
Apple должна предоставить список с Dos и не касается IB...
в моем случае я делал следующее в методах initWithFrame/initWithCoder для создания представления:
className = NSStringFromClass([self class]); self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];но похоже, что я не должен был использовать основной пакет, но пакет класса. Поэтому я заменил этот код на следующий, и он работал:
bundle = [NSBundle bundleForClass:[self class]]; className = NSStringFromClass([self class]); self.view = [[bundle loadNibNamed:className owner:self options:nil] firstObject];Я подумал, что это может помочь кому-то.
у меня была эта проблема в проекте OS X.
в моем случае проблема была в старом проекте ( NMSSH), содержащий целевой фреймворк с плохими настройками сборки. В частности:
INSTALL_PATHбыл установлен до@executable_path/../Frameworks, но правильная настройка/Library/FrameworksSKIP_INSTALLне был установлен и по умолчаниюNO, но правильная настройкаYESDYLIB_INSTALL_NAME_BASEне был установлен, но правильная настройка@rpathобратите внимание, что все правильные настройки, что вы получаете автоматически для вновь созданной структуры цели.
после изменения настроек на правильные значения, Xcode смог загрузить my
@IBDesignableпосмотреть в раскадровке.
Я также испытал это на проекте Mac и Xcode 7.3.1. В моем случае структура, на которую ссылается сообщение об ошибке "не удалось отобразить", вообще не была связана с рисованием.
просто перейдя на вкладку Общие/связанные фреймворки и библиотеки цели и изменив статус нарушителя фреймворка с требуемого на необязательный, IBDesignables смогут правильно обновлять и рисовать в IB.
выполните следующие действия:
- Если в раскадровке есть какие-либо конфликты, разрешите их правильно, проверьте правильность проверки xml.(Это основной шаг.)
- очистить проект.
- удалить папку производных данных.
- закройте Xcode и запустить его заново. (Мне пришлось сделать это дважды.)
Я ударил эту ошибку на фреймворке, содержащем IBDesignables.
мне пришлось добавить
$(FRAMEWORK_SEARCH_PATHS)доLD_RUNPATH_SEARCH_PATHSустановка на моей целевой фреймворк.после обновления настройки runpath, построения и обновления представления в раскадровке ошибка исчезла. Даже не пришлось чистить папку сборки.

