Xcode无法使用Cocoapods找到引用的Storyboard
我正在尝试使用CocoaPods创建一个Pod,我想捆绑一个“演示”故事板,我可以从我的示例应用程序的主故事板中引用它。 问题是,当我这样做时,Xcode给出了以下编译器错误:
Did not find storyboard named "Demo" referenced from Main.storyboard
看到:
在我的Podspec中,我包括:
s.resource_bundles = { 'StoryboardAssets' => ['Pod/Assets/*.{storyboard,png}'] }
您可以使用“ 使用Pod Lib创建 ”指南找到我创建的演示存储库,您可以在此处找到它:
https://github.com/Kukiwon/StoryboardDemo
我正在运行CocoaPods版本0.39.0。
那么从Pod中引用Storyboard的正确方法是什么? 我错过了什么吗?
要使用cocoapods引用故事板,您应该在Bundle部分设置pod的bundle标识符,如下图所示:
在podspec文件中,您应该添加故事板的引用(作为资源而不是bundle)
s.resource = 'MyPod/MyStoryboardName.storyboard'
更新你的pod,如果你想我可以在github上传一个例子,一切都会正常工作。
希望有所帮助
动态框架中包含的文件嵌入在应用程序中的不同NSBundle
中。 为了更容易获取故事板,您可以在库中创建一个帮助程序类:
public class StoryboardHelper: NSObject { public static let helper = StoryboardHelper() public lazy var storyboard: UIStoryboard! = UIStoryboard(name: "Main", bundle: NSBundle(forClass: StoryboardHelper.self)) public func rootController() -> UIViewController! { return storyboard.instantiateInitialViewController() } }
NSBundle(forClass: StoryboardHelper.self)
将获取StoryboardHelper
的包。
这样,您的用户只需执行以下操作即可显示嵌入式故事板的根视图控制器:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window?.rootViewController = StoryboardHelper.helper.rootController() window?.makeKeyAndVisible() return true }