2011-08-01 8 views
0

私はアプリのフルバージョンで使用するxibファイルをたくさん持っています。ライト版では、少ない機能を持つxibをロードできるようにしたいので、ライト版にしています。すべての私のviewControllersはIBに接続され、両方のターゲットによって現時点で参照されます。ライトとフルバージョンの異なるxibファイルの扱い

単に機能を無効にすること以外の機能を隠す最も良い方法はありますか?私は全く違うxibファイルを持っているのが最も簡単だと思った、間違っている?

編集:

明確にするために、私はバージョンに応じて、ビューコントローラの異なるペン先をロードする方法を把握しようとしています。私はそれがinitWithNibと関係があると信じています。

答えて

2

ターゲットを使用すると、ターゲットごとにファイルを除外/インクルードできます。

lite用のターゲットを作成します.Lite用のターゲットは、フルバージョンよりも機能性の高いNIBをロードするような、完全なアプリケーションが含まれていません。

コードファイル(.m)とNIBに同じ名前を使用し、ターゲットプロパティを使用してインクルード/除外することもできます。

これは、アプリストアにライトとフルバージョンがある場合にのみ機能します。

アプリ内購入を希望する場合は、@ Jack Humphriesが提案するものを行う必要があります。

+0

私は別々のライトと完全なアプリを用意するつもりです、はい。 –

+1

次に、Targetと一緒に行くと、異なるNIBと.mファイルに同じファイル名を使うことができます。また、ターゲットプロパティを介して包含/除外します。 – rckoenes

+0

パーフェクト!それについても考えていませんでした。それをあなたの答えに加えてください。私はあなたにその点検をします。 –

1

はい、あなたの意見では、別のXIBを持つ方が簡単でしょう。だから、フルバージョンとライトバージョンは、アプリ内購入で同じアプリに入っていますか?私は一般的なホームページを持っていて、NSUserDefaultsを使って別のページにリンクします。あなたは、同じビュー内のすべてのものをしたい場合は、さらに

[[NSUserDefaults standardUserDefaults] setBool:YES forKey"@Purchased"]; 

NSUserDefaultsを使用して、購入した場合:ここで

-(IBAction)gotogame { 

if ([[NSUserDefaults standardUserDefaults] boolForKey"@Purchased"] == YES) { 
    //go to the entire game XIB 
} 
else { 
    //go to the lite game 
} 

あなたはNSUserDefaultsを設定する方法です。たとえば、ここではボタンのコードですキーがyesの場合は、これを実行します。

[litePicture setHidden:YES]; 
[fullPicture setHidden:NO]; 

逆の場合も同様です。ご質問がある場合はお知らせください。

+0

これは良い方法だと思われますが、実際には「xib」に行く方法を探しています。私がビューコントローラxyzを持っていると仮定すると、xibまたはxyz liteでロードする方法がありますか? –

+0

あなたは知っています、私はそれについて考えたことはありません。あなたが答えを見つけることができない限り、私はちょうど2つの異なるクラスを作成し、あなたが必要とするものの上にいくつかのコードをコピーします。ライト版にはユニークなものがあるかもしれません。 –

関連する問題