2

一連の他のアプリに静的ライブラリとして簡単にプラグインできるように、変更している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 でストーリーボード ファイルを探すようにアプリに指示する方法がわかりません。ストーリーボードが読み込まれると、このバンドルから他のすべてのファイルを正常に読み取ることができます。

4

1 に答える 1

1

UPDATE 03/03/2013: 解決しました。私は正しい道を進んでいましたが、元のプロジェクトから持ち込んだファイルは、ローカライズされたフォルダー en.lproj にありました。ただし、新しいサブプロジェクトではローカライズしませんでした。en.lproj フォルダーからルート リソース フォルダーにファイルを取り出し、INFO 参照を OMPhotoGalleryLibraryResources.bundle/MainStoryboard に変更すると、機能しました。

于 2013-03-03T20:18:40.387 に答える