2011-01-24 19 views

答えて

3

メインビューではなく、追加のビューを意味しますか?その場合、あなたは、ビューのプロパティを宣言し、手でNIBを読み込むことができます。

@interface Controller {} 
@property(retain) IBOutlet UIView *extraView; 
@end 

… 

- (void) viewDidLoad // or anywhere else 
{ 
    [[NSBundle mainBundle] loadNibNamed:@"extras" owner:self options:nil]; 
    NSAssert(extraView != nil, @"The extra view failed to load."); 
    [[self view] addSubview:extraView]; 
} 

これは、Interface Builderで、ファイルの所有者としてControllerを設定し、extraViewコンセントにビューをリンクしていることを前提としています。また、コントローラーのメインNIBに余分なビューを挿入するなど、もっと洗練されたソリューションがあるかもしれません。状況によって異なります。

+0

ご迷惑をおかけして申し訳ございません。 私はAControlloer.h.mを持っているので、BView.h.mをNIBファイルとともに作成しました。 私はテコントローラをロードしたいときはいつも、このBViewをサブビューとして追加したいと思います。 – tosi

+0

これは最も一般的なシナリオのように見えますが、別の回答を追加します。 – zoul

1

最も一般的なシナリオが必要なようです。単純に初期化されたカスタムのUIViewサブクラスをコントローラにロードします。

  1. Xcodeの新しいファイルウィザードで、「View XIB」と呼ばれる新しいXIBを作成します。
  2. Interface BuilderでFile Ownerオブジェクトを選択し、Object Inspector(Cmd-4)のObject IdentityタブでController(またはコントローラクラスの名前が付けられています)をClassフィールドに入力します。
  3. ビューと同じ操作を行い、ビュー・クラスの名前を入力します。
  4. ファイルの所有者からビューにCtrl +ドラッグすると、コントローラに定義されているビューアウトレットにビューを接続できるはずです。
  5. 保存すると、Controller.xibとしましょう。
  6. コードにinitWithNibName:@"Controller" bundle:nilを使用してコントローラを初期化します。初期化コードはあなたのためにインターフェイスをロードし、インターフェイスファイルからアンパックされたビューにviewプロパティを設定する必要があります。

いくつかのInterface Builderチュートリアルを実行すると、IBは非常に優れたツールであり、使い慣れているとよいでしょう。

関連する問題