【发布时间】:2016-11-20 13:58:59
【问题描述】:
我想循环浏览视图及其子视图以突出显示它们。首先,我使用这样的选择器:
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)
}
}
我的问题是为什么。我更喜欢选择器,因为它适用于标签、按钮、图像视图等。非常感谢。
【问题讨论】: