2010-12-13 5 views
8

私は、複数の外観やパーソナリティを持つが、単一のコントローラを使用する「スキン化」できるビューコントローラを構築しようとしています。各ビューには同じボタンなどがありますが、同じビューコントローラーに各nibファイル(スキン)をロードできるようにしたいと考えています。私は複数のnibファイルを作成することができますが、ボタンとアクションをどのように接続するかわかりません。複数のnibファイルに対して同じ 'ファイルの所有者'を指定できますか? (どうやって?)。複数のペン先を持つシングルビューコントローラ?

これはできますか?

答えて

8

これは完全に可能です。新しいnibファイルを作成し、Interface Builderでファイル所有者をクラスに設定します。以前と同じようにアウトレットとアクションを接続することができます。あなたのコードから、initWithNibName:メソッドで正しいnibファイルを指定するだけです。

唯一の変更が化粧品の場合は、コードの変更を行う方が良いかもしれませんが、提案された方法はうまく動作します。

+0

ありがとう! (愚かなフォローアップの質問:ファイル所有者を設定するにはどうすればいいですか?) –

+0

ビデオはここにあります:http://vimeo.com/5105309最初の25秒間にそれを行う方法を示しています。基本的にxcodeを使用して、新しいnibファイルをプロジェクトに追加し、ダブルクリックしてInterface Builderで開きます。ファイル所有者オブジェクト(Yellowish Cube)を選択し、アイデンティティ・インスペクタ(「ツール」>「アイデンティティ・インスペクタ」)を開き、「クラスID」セクションで、クラスをView Controllerクラスに設定します。それで、あなたは前と同じようにあなたのアウトレットと行動をつなぐことができます。 – theChrisKent

0

あなたは文字通りnibファイル内のビューをコピーして同じnibファイルに貼り付けると、1つのnibファイル内に2つの別々のビューを持つことができます。

example pic

そして、あなたがそうのようにペン先を読み込むとビューの間で交換することができます:

NSArray *temp = [[NSBundle mainBundle] loadNibNamed:@"Widget" owner:self options:nil]; 
Widget *w = [temp objectAtIndex:0]]; // or 1 or 2 etc to get the different views 

これは、すべてのボタンの接続などをコピーしますので、あなただけせずにコピーして周りいじることができますすべての設定をもう一度行う必要があります

関連する問題