为什么选择器无法工作时输入效果

时间:2016-07-18 04:29:51

标签: ios swift highlight

我想循环浏览视图及其子视图以突出显示它们。首先,我使用这样的选择器:

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)
    }
}

我的问题是为什么。我更喜欢选择器,因为它适用于标签,按钮,图像视图等。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

问题是这条线没有按照你的想法行事:

view.performSelector(Selector("setHighlighted:"), withObject: highlighted)

改为使用键值编码:

view.setValue(highlighted, forKey:"highlighted")