質問

私は、いくつかのUILabelsとUIImageViewsを打ち出してきたUIViewのサブクラスと対応するXIBファイルを作成しました。私は、その後のUIViewControllerにこのカスタムUIViewの複数のコピーを載せていきたいと思います。

私は、彼らがインターフェイスビルダーに空白を表示されたときにアプリのロード表示されていないことをやります。どのような方法は、私がこの仕事をするためにUIViewのサブクラスに実装する必要がありますか?

役に立ちましたか?

解決

を抜いて最も簡単な方法は、あなたのレイアウト要素を含む1つのビューを含む、NSObjectのにファイルの所有者が設定されたペン先を作成することです。

そして、

NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];

// now you have the view, do something with it:
fv.center = CGPointMake(100,100);
[self.view addSubview:fv];

ファイルの所有者に何かをする必要はありません。それがここでもnilに設定されます。

他のヒント

これは、テーブルビューのセルを作成するために、nibファイルを使用することに類似しています。 ここでについて議論がどのようにそれをすることにページがあります。

カスタムビューのためのあなたのUIViewControllerサブクラスでコンセントを入れて、カスタムビューのペン先(.xib)ファイル内の「ファイルの所有者」としてUIViewControllerサブクラスを設定する必要があります。そして、トップレベルのビューオブジェクト(再びカスタムビューのnibファイル内)に作成したコンセントに接続します。

次に、あなたがあなたのビューコントローラコードでカスタムビューをインスタンス化するたびに、呼び出します:

[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];

追加したコンセントは、カスタムビューの新しいインスタンスを指すように設定されます。

このアプローチの唯一の欠点は、あなたのビューコントローラでは、プログラムではなく、グラフィカルインターフェイスビルダーでカスタムビューのインスタンスをレイアウトしなければならないことです。

あなたのUIViewサブクラスでプログラム的プット・ラベルとイメージを作成し、その後、あなたは他のあらゆるUIViewサブクラスのようにビルダーのインターフェースにそれを追加することができます別のアプローチ。

編集:残念ながら、Xcodeの4.0で、この機能が削除された

あなたがInterface Builderで構成されたあなたのサブビューを持っていたら、新しいグループを作成します(ライブラリウィンドウの下部にあるコグボタンを使用)し、リストビューから(あなたのイメージとラベルを含む)サブクラスのオブジェクトをドラッグすることができます(つまり、ライブラリウィンドウにないレイアウトビュー)バック。

あなたは組み込みのだろうと同じように、オブジェクトライブラリに

あなたはその後、グラフィカルに任意のインターフェイスビルダービューまたはウィンドウにビューのサブクラスのインスタンスを複数追加することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top