如何在 RxCocoa 中为自定义按钮添加控件事件?
How do I add a control event to a custom button in RxCocoa?
如何将 .tap 方法添加到自定义按钮,即。 <myCustomButton>.rx.tap
在 RxSwift/RxCocoa 中,这样我就可以将按钮的点击绑定到一个 observable。
CircularButton.swift
class UICircularButton: UIButton {
override func layoutSubviews() {
super.layoutSubviews()
clipsToBounds = true
subviews.first?.contentMode = .center
let layer: CALayer = self.layer
layer.cornerRadius = self.frame.size.width / 2
layer.masksToBounds = true
}
}
ViewController.swift
let transferButton: UIActionButton = {
let button = UICircularButton(type: .system)
button.setBackgroundImage(#imageLiteral(resourceName: "transfer"), for: .normal)
button.backgroundColor = Colors.trueGreen
return UIActionButton(button: button, actionLabel: "Transfer")
}()
// Question
func configureBinding() {
// How do I do this
transferButton.rx.tap
.bind(to: ...)
.dispose(by: ...)
}
你不需要定义它,它已经在 UIButton
上定义了,你的自定义 class 继承了它。
您可以像这样在 UIActionButton
声明中分配绑定
let transferButton: UIActionButton = {
let button = UICircularButton(type: .system)
button.setBackgroundImage(#imageLiteral(resourceName: "transfer"), for: .normal)
button.backgroundColor = Colors.trueGreen
button.rx.tap.bind {
// My code or function call
}.disposed(by: self.disposeBag)
return UIActionButton(button: button, actionLabel: "Transfer")
}()
我发现了问题,这是我的错误,按钮嵌套在一层,由于命名不当,我错过了。
如何将 .tap 方法添加到自定义按钮,即。 <myCustomButton>.rx.tap
在 RxSwift/RxCocoa 中,这样我就可以将按钮的点击绑定到一个 observable。
CircularButton.swift
class UICircularButton: UIButton {
override func layoutSubviews() {
super.layoutSubviews()
clipsToBounds = true
subviews.first?.contentMode = .center
let layer: CALayer = self.layer
layer.cornerRadius = self.frame.size.width / 2
layer.masksToBounds = true
}
}
ViewController.swift
let transferButton: UIActionButton = {
let button = UICircularButton(type: .system)
button.setBackgroundImage(#imageLiteral(resourceName: "transfer"), for: .normal)
button.backgroundColor = Colors.trueGreen
return UIActionButton(button: button, actionLabel: "Transfer")
}()
// Question
func configureBinding() {
// How do I do this
transferButton.rx.tap
.bind(to: ...)
.dispose(by: ...)
}
你不需要定义它,它已经在 UIButton
上定义了,你的自定义 class 继承了它。
您可以像这样在 UIActionButton
声明中分配绑定
let transferButton: UIActionButton = {
let button = UICircularButton(type: .system)
button.setBackgroundImage(#imageLiteral(resourceName: "transfer"), for: .normal)
button.backgroundColor = Colors.trueGreen
button.rx.tap.bind {
// My code or function call
}.disposed(by: self.disposeBag)
return UIActionButton(button: button, actionLabel: "Transfer")
}()
我发现了问题,这是我的错误,按钮嵌套在一层,由于命名不当,我错过了。