我创建了一个自定义视图,用作带图像和文本的单选按钮。我需要能够在控制器加载时加载保存的选择。我以这种方式设置了听众:
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.
...
}
}
问题在于我找不到一种方法来告诉视图选择。我尝试制作手势识别器和对象,但它没有任何方法可以用来触发它。 '按钮'实际上不是按钮,它们是视图,所以我无法发送动作事件。
如何选择带代码的正确按钮?
答案 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)
}