5

UIView サブクラスであるルート ビューを持つ xib があります。このビューは、Interface Builder で宣言した子ビューへの参照をどのように取得する必要がありますか?

明らかに、ViewController はアウトレットに接続できますが、UIView はどうでしょうか?

4

2 に答える 2

15

アウトレットは、(ほとんどの場合) UIView オブジェクト (または UIView のサブクラス) のインスタンスを参照する UIViewController オブジェクトのプロパティです。

UIViewController には単一の UIView があり、UIViewController が で読み込まれるとinitWithNibNamed:、XIB ファイルの内容になります。UIViewController でアウトレットを設定し、リストの「ファイルの所有者」項目にドラッグするか、Xcode のアシスタント エディターのコードにドラッグすることで、それらを XIB のさまざまなサブビューに関連付けることができます。

コードのみを使用する場合は、いくつかのオプションがあります。tag1 つの方法は、そのプロパティに基づいてビューに直接アクセスすることです。例えば:

[myView viewWithTag:42];

考慮すべきもう 1 つのアプローチは、UIView に、サブビューsubviewsの配列である というプロパティがあることです。それらを反復して、必要に応じてビューにアクセスできます。それらを区別するために、状況に応じていくつかのことを行うことができます。ビューにタグを設定して、それらをそのまま使用できます。

NSArray *subviews = myView.subviews;

for(UIView *view in subviews){
  if(tag == 42){
    // Do something with that view
  }
}

あるいは、特定の種類のビュー、たとえば UISwitch を探している場合、次のような単純なケースで機能する可能性があります。

for(id view in subviews){
  if([view isKindOfClass:NSClassFromString(@"UISwitch")]){
    // Do something with that view, since it's a switch 

  }
}

タグを使用している場合は、コードで設定するか、Interface Builder を使用できます。

于 2012-07-20T12:45:08.997 に答える
4

試す[view viewWithTag:tagOfChildView];

于 2012-07-20T12:40:47.913 に答える