静的ライブラリを使用してバンドルをパッケージ化する
-
03-07-2019 - |
質問
いくつかのxibを含む静的ライブラリがあります。これらは基本的にプロジェクト間で同じです。ライブラリの一部としてxibsを含めたいです。 veiwcontrollersを含め、呼び出し元のプロジェクトでこれらのコントローラーを参照できますが、ロードするxibはありません。ライブラリプロジェクトでxibを右クリックすると、ターゲットの一部になりません。
CFPluginBundleの作成について考えましたが、新しいプロジェクトが作成されます。 IBOutletとIBActionの参照をすべて失います。特定のコントローラーへのアウトレットとアクションも持つxibを再利用する最良の方法は何ですか?
解決
それについてのさらなる議論: Can iPhoneの静的ライブラリからXibファイルを参照しますか?
他のヒント
他の開発者が使用するライブラリとしてプロジェクトをエクスポートしたいとき、私は同じ問題を抱えていました。 私の見解に対する完璧な解決策を見つけましたが、あなたの答えにもなるようです。
リソースを含むライブラリとしてプロジェクトをビルドできるxcodeプラグインがあります。
https://github.com/kstenerud/iOS-Universal-Framework
このプラグインを作成した人は知りませんが、それは魅力のように機能します
静的ライブラリにはリソースを含めることができないため、「ライブラリの一部としてxibを含める」という意味がわかりませんが、スタンドアロンライブラリはスタンドアロンで出荷されないため、する必要があります。独自のプロジェクトでコードを再利用したい場合は、静的ライブラリを保持している場所にxibを保持し、ライブラリを使用するプロジェクトにxibを含めることができます。
CFPluginBundleルートを選択すると、既存のプロジェクトに新しいバンドルターゲットを作成できます。テンプレートには魔法はありません。ダミーファイルを作成し、適切なビルド設定を有効にするだけです。それらを既存のプロジェクトの新しいターゲットにコピーすれば、問題なく機能します。とはいえ、IBOutletおよびIBActionの参照を失うことの意味はわかりません。その情報はプロジェクトではなくxib(およびxibで使用しているクラス)の一部であるためです。