加载包含在Framework中的nib

Con*_*oob 8 xcode cocoa-touch objective-c ios

可能重复:
您可以从iPhone上的静态库引用Xib文件吗?

我创建了一个iOS框架,它包含一个xib视图.当我调试程序时,这行代码工作正常:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:[NSBundle mainBundle]];
Run Code Online (Sandbox Code Playgroud)

但是,当我从另一个项目"引用"框架时 - nib不再位于'mainBundle'中.我应该如何处理上面的代码(这是框架的一部分),所以它从框架而不是消费的应用程序项目加载?

Flu*_*imp 16

有问题的框架Info.plist通常应在其文件中包含一个包标识符.在使用此自定义框架的应用程序中,您应该能够通过以下方式访问此捆绑包中的资源:

NSString *frameworkBundleID = @"com.yourCompany.YourFrameworkBundleID";
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:frameworkBundleID];
Run Code Online (Sandbox Code Playgroud)

这就是NSBundle从中可以访问框架资源.

编辑:

似乎有一种替代(可能更好)的方法来访问相关的捆绑包.

例如:

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyLibraryResources" withExtension:@"bundle"]];
Run Code Online (Sandbox Code Playgroud)

看到这个优秀的教程