我为我的自定义创建了一个 xib 文件,UIView
并将我的 xib 加载到我的自定义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:
函数而不是循环遍历id
s 和强制转换吗?