2016-02-19 47 views
9

我正在嘗試使用CocoaPods創建一個Pod並且我想捆綁一個「Demo」Storyboard,我可以從示例應用程序中的主Storyboard中引用它。問題是,Xcode中給了我下面的編譯器錯誤,當我這樣做:Xcode無法找到使用Cocoapods引用的Storyboard

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

參見:

enter image description here

enter image description here

在我Podspec,我包括:

s.resource_bundles = { 
    'StoryboardAssets' => ['Pod/Assets/*.{storyboard,png}'] 
} 

你可以找到,我使用「Using Pod Lib Create」指導創建演示存儲庫,你可以在這裏找到:

https://github.com/Kukiwon/StoryboardDemo

我運行的CocoaPods版本0.39.0。

那麼從Pod中引用故事板的正確方法是什麼?我錯過了什麼嗎?

回答

2

包含在動態框架中的文件被嵌入在應用程序中的另一個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 
} 
+1

謝謝,但看着GitHub上的演示應用程序,這將如何適用於我的項目?在你的例子中,你實例化Pod中的「Main」故事板,但是我想引用我的「Main」Storyboard中的「Demo」故事板。此外,我想知道這是否只能使用Storyboards(在iOS9中使用Storyboard參考)。你認爲這有可能嗎? – Kukiwon

5

要引用故事板使用的CocoaPods,你應該在束部設置,捆綁莢的標識,像下面的圖片:

enter image description here

而在你podspec文件,你應該添加您的故事板的基準(如RES烏爾斯河,而不是捆綁)

s.resource = 'MyPod/MyStoryboardName.storyboard'

更新您的吊艙,所有會工作得很好,如果你想我可以在github上上傳一個例子。

希望有幫助

+1

這對我有效!出於某種原因,s.resource_bundles下的故事板不夠好。但是在我添加了s.resource之後,它就起作用了! –