以编程方式点击查看

时间:2018-04-13 18:01:37

标签: ios swift uiview uitapgesturerecognizer

我创建了一个自定义视图,用作带图像和文本的单选按钮。我需要能够在控制器加载时加载保存的选择。我以这种方式设置了听众:

for button in genderButtons {
    button.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(genderTapped(_:))))
}

@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
    for button in genderButtons {
        button.select(sender.view! == button) // Toggles the button to display selected/deslected state.

        ...
    }
}

问题在于我找不到一种方法来告诉视图选择。我尝试制作手势识别器和对象,但它没有任何方法可以用来触发它。 '按钮'实际上不是按钮,它们是视图,所以我无法发送动作事件。

如何选择带代码的正确按钮?

2 个答案:

答案 0 :(得分:2)

只需直接致电genderTapped,将已经附加到所需"按钮的手势识别器交给他"。

例如,如果thisGenderButton是你想要的那个"点按",请说:

if let tap = thisGenderButton.gestureRecognizers?[0] as? UITapGestureRecognizer {
    genderTapped(tap)
}

答案 1 :(得分:0)

您可以在customView中添加此方法,例如

Class CustomView: UIView {

    public func select(_ value: Bool) {
       self.backgroundColor = value ? .green: .red
    }
}

然后在下面的方法中,您可以为点按的视图调用select

@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
   (sender.view as? CustomView)?.select(true)
}