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 }