我创建了一个 iOS 框架,并包含一个 xib 视图。当我调试程序时,这行代码能正常工作:
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:[NSBundle mainBundle]];
然而,当我从另一个项目中“引用”该框架时- nib不再位于“mainBundle”中。对于上面的代码(它是框架的一部分),我应该怎么做才能从框架加载而不是消费应用程序项目加载?
我创建了一个 iOS 框架,并包含一个 xib 视图。当我调试程序时,这行代码能正常工作:
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:[NSBundle mainBundle]];
然而,当我从另一个项目中“引用”该框架时- nib不再位于“mainBundle”中。对于上面的代码(它是框架的一部分),我应该怎么做才能从框架加载而不是消费应用程序项目加载?
这个框架应该在其Info.plist
文件中有一个捆绑标识符。在使用此自定义框架的应用程序中,您应该能够通过以下方式访问此捆绑中的资源:
NSString *frameworkBundleID = @"com.yourCompany.YourFrameworkBundleID";
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:frameworkBundleID];
这是一个可以访问框架资源的NSBundle
。
编辑:
似乎有一种替代(可能更好的)方式来访问相关的捆绑包。
例如:
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyLibraryResources" withExtension:@"bundle"]];
请参考这篇优秀的教程