UIView サブクラスであるルート ビューを持つ xib があります。このビューは、Interface Builder で宣言した子ビューへの参照をどのように取得する必要がありますか?
明らかに、ViewController はアウトレットに接続できますが、UIView はどうでしょうか?
UIView サブクラスであるルート ビューを持つ xib があります。このビューは、Interface Builder で宣言した子ビューへの参照をどのように取得する必要がありますか?
明らかに、ViewController はアウトレットに接続できますが、UIView はどうでしょうか?
アウトレットは、(ほとんどの場合) UIView オブジェクト (または UIView のサブクラス) のインスタンスを参照する UIViewController オブジェクトのプロパティです。
UIViewController には単一の UIView があり、UIViewController が で読み込まれるとinitWithNibNamed:
、XIB ファイルの内容になります。UIViewController でアウトレットを設定し、リストの「ファイルの所有者」項目にドラッグするか、Xcode のアシスタント エディターのコードにドラッグすることで、それらを XIB のさまざまなサブビューに関連付けることができます。
コードのみを使用する場合は、いくつかのオプションがあります。tag
1 つの方法は、そのプロパティに基づいてビューに直接アクセスすることです。例えば:
[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 を使用できます。
試す[view viewWithTag:tagOfChildView];