2012-01-17 8 views
1

UIViewControllerクラスMyClassには、最初はXIBがなく、プログラムによって初期化されています。今、私はXIBからロードしたくないですが、50x50 UIView(設定オーバーレイビュー)を小さくしたいのですが、それをMyClassに追加したいので、プログラムで新しい設定オーバーレイビューを宣言するのではなく、私はXIBファイルを作成し、ファイルの所有者をMyClassに設定し、MyClass.hIBOutlet UIView *settingsOverlayと宣言し、それをXIBにリンクすると考えました。UIViewサブビューを追加できない

viewDidLoadの方法では、私は[self.view addSubview:settingsOverlay]を実行しますが、いくつかの厄介な理由のために動作しません。それは表示されません。私は、単純にUIImageViewをプログラムで作成してサブビューに追加しようとしましたが、うまくいきましたが、XIBで処理すると機能しません。誰かが間違っている可能性があることを指摘できますか?私が含める必要がある他の詳細を教えてください。

+0

いくつかのコードを表示できますか?どのようにコントローラを初期化していますか? XIBファイルのファイル名は何ですか? – murat

答えて

2

xibを使用してビューを追加する場合は、loadNibNamedメソッドを使用する必要があります。

[[NSBundle mainBundle] loadNibNamed:@"settingsOverlay" owner:self options:nil]; 
あなたはより多くの情報のため、開発者のリンクを参照することができ

- http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/NSBundle_UIKitAdditions/Introduction/Introduction.html

+0

はいこれでした!ありがとう – Snowman

1

設定オーバーレイビューのためのXIBを作成し、それが暗黙のうちにそのXIBを手動でインスタンス化の結果としてロードされることはありませんMyClassのに所有者の設定私のクラス。 MyClass viewDidLoadで設定オーバーレイビューXIBを手動でロードし、サブビューとして追加する必要があります。それをロードしてオーナーとして渡すと、自分が作成したIBOutletにバインドされますが、サブビューとして追加する必要があります。

のviewDidLoad内のコードは次のようになります。

[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self]; 
[self.view addSubview:self.overlayView]; 
1

あなたはsettingsOverlayが設定される前に、MyClassののXIBをロードする必要があります。 addSubview呼び出しの前にこの行を追加してみてください。

[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:self options:nil];