1
ビューとそのサブビューをループしてハイライトしたいとします。セレクタが機能しないときに型キャストが動作する理由
func highlightViewAndSubviews(view: UIView, highlighted: Bool) {
if view.respondsToSelector(Selector("setHighlighted:")) {
view.performSelector(Selector("setHighlighted:"), withObject: highlighted)
}
for subview in view.subviews {
highlightViewAndSubviews(subview, highlighted: highlighted)
}
}
しかし強調したときに、それは動作しませんがfalseまたはビューがUILabel
である:第一に、私はこのようなセレクタを使用しています。次に、これを達成するために型キャストを使用します。それは完全に動作します。
func highlightViewAndSubviews(view: UIView, highlighted: Bool) {
if let imageView = view as? UIImageView {
imageView.highlighted = highlighted
}
if let label = view as? UILabel {
label.highlighted = highlighted
}
for subview in view.subviews {
highlightViewAndSubviews(subview, highlighted: highlighted)
}
}
私の質問が理由です。ラベル、ボタン、イメージビューなどで機能するため、セレクタを優先します。事前に多くの感謝。
ありがとう!この行が何をしているか説明してください。 – Lumialxk