これはかなり奇妙だと思います。だから私は を持っていて、すべてUIViewの を変更したいと思います。これが私がしたことです:textcolorUILabel
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 *labelUIView *label
次のコードを書いたときに動作するので、これが問題だと思います。
for (UILabel *label in [self subviews]) { // self is the UIView
if ([label isKindOfClass:[UILabel class]]) {
label.textColor = someColor;
}
}
したがって、このコードでは、 が であることを確認してから を設定labelすると、ビュー内のすべての が色を正しく変更します。UILabeltextcolorUILabel
if-statementインスタンスタイプを再確認する必要がある理由を誰か説明できますか?