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)

这奏效了。