一連の他のアプリに静的ライブラリとして簡単にプラグインできるように、変更しているiosアプリがあります。ただし、対応するすべてのリソースも必要なので、これらを含めるカスタム バンドルを作成しました。バンドルには、すべてのタブ バー画像、ローカライズ可能な文字列、デフォルト画像、そしてこの質問で最も重要なストーリーボード ファイルが含まれています。アプリを実行すると、カスタム バンドルにストーリーボード ファイルが見つかりません。
私のプロジェクトは次のようにレイアウトされています: うーん...わかりました、評判スコアが上がるまで画像を投稿できないようです。
スタティック ライブラリ プロジェクトは、サブ プロジェクトとしてマスター プロジェクトにドラッグされます。静的サブプロジェクトには、libOMPhotoGalleryLibrary.a ファイルを生成するライブラリと、OMPhotoGalleryLibraryResources.bundle ファイルを作成する libraryResources の 2 つのターゲットが含まれています。リソースのビルド フェーズの [バンドル リソースのコピー] セクションには、(多数のイメージ ファイルと文字列ファイルと共に) 以下が含まれます。
MainStoryboard_iPad.storyboard in OMPhotoGalleryLibraryResources/(localization).lproj
OMPhotGalleryLibraryResources
/(localization).lprojの MainStoryboard_iPhone.storyboard
次に、マスター プロジェクトはサブプロジェクトの静的 .a ファイルをリンクされたフレームワークとライブラリ セクションに含め、カスタム バンドルはそのコピー バンドル リソースに含めます。
プロジェクトを実行すると、次のメッセージが表示されます: 'MainStoryboard_iPhone' という名前のストーリーボードがバンドル NSBundle に見つかりませんでした
OK、これは完全に予想外というわけではありません。代わりにカスタム バンドルを調べるようにアプリに指示する方法を理解する必要があるからです。
デバッグの演習として、メイン プロジェクトの参照を (一時的に) ストーリーボード ファイルに直接追加し、すべてを機能させることができました。したがって、静的ライブラリが適切に機能していること、およびバンドルがデプロイされ、イメージとローカライズ可能な文字列がデプロイされ、アクセス可能であることはわかっています。そのため、メイン プロジェクトで一時参照を削除すると、ランタイムはストーリーボード ファイルを再び見つけることができなくなります。
マスター プロジェクトの情報セクションにあるストーリーボード ファイル名を次のそれぞれに調整しようとしましたが、うまくいきませんでした: OMPhotoGalleryLibraryResources.bundle/MainStoryboard_iPhone
また、マスター プロジェクトのアプリの削除でいくつかのプログラムによるアプローチを試みましたが、うまくいきませんでした。そのため、OMPhotoGalleryLibraryResources.bundle でストーリーボード ファイルを探すようにアプリに指示する方法がわかりません。ストーリーボードが読み込まれると、このバンドルから他のすべてのファイルを正常に読み取ることができます。