2010-11-18 6 views
0

私はUIViewControllerを持っています。 UIViewControllerには、1つのコンセント(UIView)を持つNIBがあり、いくつかのボタンとラベルが含まれています。 UIDatePickerのようなものだと想像してみてください。iPhone SDK:C#のようなCustomControls

すべてのコントロールコードを新しい環境に貼り付けることを余儀なくされないように、UIViewを別のUIViewサブクラスにC#CustomControlアプローチの一種であるNIBでカプセル化しようとしていました。制御(その他)のUIViewController私は

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; 
selectorView = (DateTimeSelectorView*)[nibObjects objectAtIndex:0]; 

selectorViewを使用してのUIViewControllerクラスのプロパティですNIBからビューをインスタンス化していますから、

。問題:私のUIViewの "initWithFrame"は決して呼び出されません。私のUIViewは全体のスペース(320x480)を覆っていますが、サイズは小さくなければなりません。どのように私はこれを達成することができますか?さらに、UIViewはUIViewControllerクラスからインスタンス化された他のすべてのコントロールを隠しているようです。

よろしく

答えて

0

ビューはペン先ローダーによってインスタンス化されると、initWithFrameは:呼び出されません。ペン先ローダーはinitWithCoder:を呼び出します。フレームの設定を含む、初期化を実行するには、initWithCoderを実装する必要があります。

+0

ありがとうございます。私は答えを見つけた。それは明らかではない。私は小さな "ハウツー" – neil

0

質問のための「ハウツー」は次のとおりです。自己完結型のUIViewをUIViewControllerに埋め込む方法 NIB?

1)ボタンとテキストフィールドを持つUIViewがあり、ログインしているとします。 Login.xibと呼ばれる別のNIBにUIがあります。この機能は、UI.mのサブクラスであるLogin.mとLogin.hにあります。クラス名は「ログイン」です。 Login.xibでクラスが適切に設定されているように注意してください。すべて順調。

2)これは新しいアプリでこの「使いやすい」ものを使いたいと思っています。

3)あなたの新しいUIViewのベースのプロジェクト

4に三つのファイル(Login.m、Login.hとLogin.xib」)をドラッグします)は、お使いのログインクラスを指し、あなたのUIViewControllerクラスのプロパティを追加します(もちろん、Login.xibと最初Login.h)

5)オープンIBが含まれており、現在のUIViewControllerクラス

6)プロパティを使用してLogin.xibのメインビューを接続するために、ファイルの所有者を設定しますUIViewControllerで定義されています(これは重要です!!)

7)あなたはそれが表示されてみましょうどこ

[[NSBundle mainBundle] loadNibNamed:@"Login" owner:self options:nil]; 
myLogin.frame = CGRectMake(0 ,100, 320, 200); // Optional, you may also use the initial bounds 
[self.view addSubview:myLogin]; 

ビューが表示されます)はずのUIViewControllerであなたのviewDidLoad(以下に、あなたの財産の名前は「myLogin」を追加します。スーパービューの他のコントロールも利用可能になります。

これを知るには数時間かかりました。ここにはいくつかの情報が散在していますが、これまでの単純な作業のための完全な「方法」は見つかりませんでした。

よろしくお願いいたします。

関連する問題