Не удалось отобразить экземпляр 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/Frameworks
SKIP_INSTALL
не был установлен и по умолчаниюNO
, но правильная настройкаYES
DYLIB_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, построения и обновления представления в раскадровке ошибка исчезла. Даже не пришлось чистить папку сборки.