0

UIViewサブクラスと対応するxibファイルを作成し、UILabelsとUIImageViewsをレイアウトしました。次に、このカスタムUIViewの複数のコピーをUIViewControllerに配置します。

これを行うと、Interface Builderで空白になり、アプリの読み込み時に表示されません。これを機能させるには、UIViewサブクラスにどのようなメソッドを実装する必要がありますか?

4

3 に答える 3

5

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

それで

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に設定されています。

于 2010-08-07T09:49:05.677 に答える
2

これは、nibファイルを使用してテーブルビューセルを作成するのと似ています。これを行う方法を説明するページがあります

カスタムビューのサブクラスにアウトレットを配置し、カスタムビューのnib(.xib)ファイルでサブクラスを「ファイルの所有者」としてUIViewController設定する必要があります。UIViewController次に、作成したアウトレットをトップレベルのビューオブジェクトに接続します(これもカスタムビューのnibファイルにあります)。

次に、View Controllerコードでカスタムビューをインスタンス化するたびに、次を呼び出します。

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

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

このアプローチの唯一の欠点は、Interface Builderでグラフィカルにではなく、プログラムでViewControllerにカスタムビューのインスタンスをレイアウトする必要があることです。

別のアプローチでは、サブクラスにプログラムでプットラベルと画像を作成し、UIView他のサブクラスと同じようにインターフェイスビルダーに追加できますUIView

于 2010-08-06T23:22:49.730 に答える
0

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

Interface Builderでサブビューを構成したら、新しいグループを作成し(ライブラリウィンドウの下部にある歯車ボタンを使用)、リストビュー(つまり、レイアウトではない)からサブクラスオブジェクト(画像とラベルを含む)をドラッグできます。ビュー)ライブラリウィンドウに戻ります。

次に、ライブラリの組み込みオブジェクトの場合と同じように、ビューサブクラスの複数のインスタンスを任意のInterfaceBuilderビューまたはウィンドウにグラフィカルに追加できます。

于 2010-08-06T23:33:31.310 に答える