カスタム用の xib ファイルを作成し、xib をカスタムUIView
にロードUIView
しました。
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"ProductDetailView" owner:self options:nil];
self = [views objectAtIndex:0];
すべてのサブビューを IBOutlets として定義したくなかったので、代わりにサブビューを反復する方が適切だと考えました。
for (id subview in self.subviews) {
if ([subview isKindOfClass:[UIView class]]) {
UIView *theView = (UIView*)subview;
if (theView.tag == 16) {
// tag 16 is specific to some UIViews... do stuff
}
}
else if ([subview isKindOfClass:[UILabel class]]) {
UILabel *theLabel = (UILabel*)subview;
if (theLabel.tag == 21) {
// tag 17 is specific to some UILabels... do stuff
}
else
{
// no tag... do stuff
}
}
}
これはより堅牢だと思っていましたが、UILabel
s は s から継承されているUIView
ため、このアプローチは使用できません。if 命令を変更すると機能することは承知していますが、if 句の順序に依存するのはあまり気分が良くありません
私が求めているのは、そのような状況で最も論理的なアプローチは何でしょうか? viewWithTag:
sをループしてid
キャストする代わりに、関数を使用する必要がありますか?