Xcode无法使用Cocoapods找到引用的Storyboard

Kuk*_*won 10 xcode ios uistoryboard cocoapods swift

我正在尝试使用CocoaPods创建一个Pod,我想捆绑一个"演示"故事板,我可以从我的示例应用程序的主故事板中引用它.问题是当我这样做时Xcode给我以下编译器错误:

Did not find storyboard named "Demo" referenced from Main.storyboard

看到:

在此输入图像描述

在此输入图像描述

在我的Podspec中,我包括:

s.resource_bundles = {
    'StoryboardAssets' => ['Pod/Assets/*.{storyboard,png}']
}
Run Code Online (Sandbox Code Playgroud)

您可以使用" 使用Pod Lib创建 "指南找到我创建的演示存储库,您可以在此处找到它:

https://github.com/Kukiwon/StoryboardDemo

我正在运行CocoaPods版本0.39.0.

那么从Pod中引用Storyboard的正确方法是什么?我错过了什么吗?

Ham*_*mza 5

要使用cocoapods引用故事板,您应该在Bundle部分设置pod的bundle标识符,如下图所示:

在此输入图像描述

在podspec文件中,您应该添加故事板的引用(作为资源而不是bundle)

s.resource = 'MyPod/MyStoryboardName.storyboard'

更新你的pod,如果你想我可以在github上传一个例子,一切都会正常工作.

希望有所帮助


red*_*t84 4

动态框架中包含的文件嵌入到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()
    }
}
Run Code Online (Sandbox Code Playgroud)

NSBundle(forClass: StoryboardHelper.self)将获得捆绑包StoryboardHelper

这样,您的用户只需执行以下操作即可显示嵌入式故事板的根视图控制器:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    window?.rootViewController = StoryboardHelper.helper.rootController()
    window?.makeKeyAndVisible()

    return true
}
Run Code Online (Sandbox Code Playgroud)