iOS8:如何从动态框架加载 xib
iOS8: How to load xib from Dynamic Framework
我正在使用 Cocoapods 预发布版 0.36 构建私有 动态框架 并将其部署到应用程序包中。我正在使用资源属性来复制 xib,它们出现在应用程序包中。
s.subspec 'Views' do |ss|
...
ss.resources = ['All/My/Folders/**/*.{xib,png}']
...
我正在尝试像这样从 xibs 加载可重用控件:
NSBundle.mainBundle().loadNibNamed("MyXib", owner:loader, options:nil)
但这失败了,因为它无法在我的嵌入式子框架中找到 xib。实际的 xib (nib) 路径遵循以下模式:'
./Frameworks/MyPrivateFramework.framework/MyXib.nib
我的问题是,是否有一种简单的、代码不可知的方式来加载 xib,当打包在 iOS 8 框架中时可以工作——或者我是否必须在上述路径中明确硬编码?上面的加载代码一直有效,直到我认为动态框架发生了变化。
谢谢
从这个 post 这里:
http://artsy.github.io/blog/2015/01/04/cocoapods-and-frameworks/
我找到了从 class 中获取框架包的不可知解决方案,即:
NSBundle(forClass: ClassInFramework.self)
然后从中加载 xib:
NSBundle(forClass: ClassInFramework.self)
.loadNibNamed("ClassInFramework", owner:loader, options:nil)
这奏效了。
我正在使用 Cocoapods 预发布版 0.36 构建私有 动态框架 并将其部署到应用程序包中。我正在使用资源属性来复制 xib,它们出现在应用程序包中。
s.subspec 'Views' do |ss|
...
ss.resources = ['All/My/Folders/**/*.{xib,png}']
...
我正在尝试像这样从 xibs 加载可重用控件:
NSBundle.mainBundle().loadNibNamed("MyXib", owner:loader, options:nil)
但这失败了,因为它无法在我的嵌入式子框架中找到 xib。实际的 xib (nib) 路径遵循以下模式:'
./Frameworks/MyPrivateFramework.framework/MyXib.nib
我的问题是,是否有一种简单的、代码不可知的方式来加载 xib,当打包在 iOS 8 框架中时可以工作——或者我是否必须在上述路径中明确硬编码?上面的加载代码一直有效,直到我认为动态框架发生了变化。
谢谢
从这个 post 这里:
http://artsy.github.io/blog/2015/01/04/cocoapods-and-frameworks/
我找到了从 class 中获取框架包的不可知解决方案,即:
NSBundle(forClass: ClassInFramework.self)
然后从中加载 xib:
NSBundle(forClass: ClassInFramework.self)
.loadNibNamed("ClassInFramework", owner:loader, options:nil)
这奏效了。