これはかなり奇妙だと思います。だから私は を持っていて、すべてUIView
の を変更したいと思います。これが私がしたことです:textcolor
UILabel
for (UILabel *label in [self subviews]) { // self is the UIView
label.textColor = someColor;
}
コードを実行すると、次のようなエラーでクラッシュしましたUIImageView: unrecognized selector setTextColor: sent to instance (some instance)
したがってlabel
、高速列挙の は実際にはUIImageView
. ちなみに、 には が 2 つUIImageView
ありUIView *self
ます。ただし、高速列挙はのみを与えるべきではありませんか (の代わりUILabel
に指定したため)。UILabel *label
UIView *label
次のコードを書いたときに動作するので、これが問題だと思います。
for (UILabel *label in [self subviews]) { // self is the UIView
if ([label isKindOfClass:[UILabel class]]) {
label.textColor = someColor;
}
}
したがって、このコードでは、 が であることを確認してから を設定label
すると、ビュー内のすべての が色を正しく変更します。UILabel
textcolor
UILabel
if-statement
インスタンスタイプを再確認する必要がある理由を誰か説明できますか?