0

さまざまなインターネット リソースとの計算と通信を行うアプリを作成しました。私は自分のアプリケーションを 3 つの企業クライアントのタブ バー ナビゲーション バーでブランド化しました。唯一の変更点は、写真と色の違いでした。そこで、3 つのターゲットを作成し、ターゲット メンバーシップを適切に処理しました。

ここまでは順調ですね。しかし、ビューのレイアウト全体やクライアントのアプリのナビゲーションまでもカスタマイズしたい場合はどうすればよいでしょうか? たとえば、次のクライアントは、タブ バーに基づくナビゲーションではなく、ナビゲーション コントローラーに基づく対話を要求する可能性があります。または、1 つのビューにもう 1 つのラベルを追加します。または、棒グラフの代わりに円グラフを使用して、特定のデータ セットを視覚化します。

これらすべての if/else if/else if/else if/... コード ブロックを含む 1 つのプロジェクトにすべての異なるターゲットを配置すると、非常に醜いコードになります。クライアントが100人いたら?

ここで質問です。私の想像では、ドメイン固有の計算、通信などを (もちろん) すべて実行し、基本的な非ブランド UI を持つ「 Base 」という名前の Xcode プロジェクトを作成できれば、理想的なコンセプトになります。. このようにして、すべてのクライアントのコードを 1 つの中央リポジトリで簡単に管理できます。次に、クライアントごとにまったく新しい Xcode プロジェクトを作成し、「ベース」プロジェクトをインポートまたは参照します。カスタマイズせずに [ビルド] をクリックすると、ブランド化されていないが完全に機能するアプリが既にビルドされています。クライアントがレイアウトの変更を要求した場合、対応するビューをサブクラス化します。[ビルド] ボタンをもう一度押すと、「Base」アプリが表示されるはずですが、特定のサブクラス化されたビューが標準レイアウトを置き換えました。

ビジュアルを「オーバーライド」する「ベース」アプリのこのアイデアは、Xcodeでエレガントに実行できますか?

4

2 に答える 2

0

私は昨年、クライアントのためにまさにそれをしました。アプリ プロジェクトと共有されるヘッダーを使用する 1 つのフレームワーク アプリがありました。これは、アプリがいくつかの文字列、ビュー、および画像を提供することを "コミット" するという点で、プロトコルのようなものです。かなり単純なアプリ プロジェクトから始めて、より多くのバリエーションが必要であることがわかったら、コードをフレームワークからアプリに移動します。ヘッダーは、アプリ固有のデータを提供するクラスメソッドのみのクラスの実装でした。

私の場合、7 つほどのアプリ (現在はすべてストアにあります) がありましたが、正確にどのアプリがそれを使用しているかについての知識はまったくありませんでした。

アプリが起動した例のように、フレームワークはサウンドを再生する必要があるかどうかを照会し、再生する必要がある場合はそのリソースを要求します - 画像やその他のバリエーションと同じです。

于 2012-09-02T13:10:23.993 に答える
0

それを行う 1 つの方法は、静的ライブラリを作成することです。一般的に使用されるすべてのものを静的ライブラリに詰め込み、他のプロジェクトで参照することができます。

おそらくほとんどのものは静的ライブラリにあり、アプリ プロジェクトには 1 つまたは 2 つのファイルしかありません。これは、アプリケーション間の変更がごくわずかである場合にうまく機能します (つまり、投稿で言及したようなスタイルの変更のみ)。

もう 1 つの手法は、生成されたテンプレート コードを使用することです。定型コードがあり、提供された色、ロゴ、文字列などに基づいてプロジェクトとリソースを設定するスクリプトを実行するという考えです。

最終的には、要件に基づいて上記の 2 つのアプローチを組み合わせて使用​​することをお勧めします。

于 2012-09-02T13:10:52.460 に答える