2016-02-19 9 views
9

私はCocoaPodsを使ってPodを作成しようとしていますが、サンプルアプリケーションのメインストーリーボードから参照できる "デモ"ストーリーボードをバンドルしたいと思います。問題は、私はそうするときのXcodeは私に次のコンパイラエラーを与えることである。XcodeはCocoapodsを使って参照されたストーリーボードを見つけることができません

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

を参照してください:私のPodspecで

enter image description here

enter image description here

、私が含ま:

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

あなたは、私が「Using Pod Lib Create」ガイドを使用して作成したデモ・リポジトリを見つけることができます、あなたはここでそれを見つけることができます:私はCocoaPodsバージョン0.39.0を実行している

https://github.com/Kukiwon/StoryboardDemo

あなたのポッドからストーリーボードを参照する適切な方法は何ですか?何か不足していますか?

答えて

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の束を取得します。

この方法で、お使いのユーザーのみが埋め込まれた絵コンテのルートビューコントローラを示すために次の操作を行う必要があります:cocoapodsを使用してストーリーボード参照するには

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

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

    return true 
} 
+1

おかげで役立ちますが、GitHubの上でデモアプリケーションを見て、どのようにこれは私のプロジェクトに適用されますでしょうか?あなたの例では、ポッド内の "メイン"ストーリーボードをインスタンス化しますが、私は "メイン"ストーリーボードから "デモ"ストーリーボードを参照したいと思います。また、ストーリーボード(iOS9のストーリーボード参照)を使用してのみこれを行うことができるのだろうかと思っていました。それが可能だと思いますか? – Kukiwon

5

を、あなたは、バンドルセクションにバンドルを設定する必要があります解像度として

enter image description here

そして、あなたのpodspecファイルで、あなたのストーリーボードの参照を追加する必要があります(:ポッドの識別子、下の写真のようにourceないバンドル)

s.resource = 'MyPod/MyStoryboardName.storyboard'

あなたのポッドを更新し、あなたは、私はgithubの例をアップロードすることができますしたい場合は、すべてのは、罰金作品になります。

希望

+1

これは私のために働いた!何らかの理由で、s.resource_bundlesの下のストーリーボードが十分ではなかった。しかし、私はs.resourceを追加した後、それは働いた! –