【发布时间】:2020-04-25 14:19:10
【问题描述】:
我正在开发一个新的 SwiftUI 应用程序,并试图弄清楚如何使这个 Swift pod 与 SwiftUI 兼容 https://github.com/warchimede/RangeSlider
我相信要走的路是制作一个 UIViewRepresentable Struct,但我对它的理解不够好,无法自己做。 下面的代码给了我一个错误: 类型“RSlider”不符合协议“UIViewRepresentable”
struct RSlider: UIViewRepresentable {
@Binding var lowerValue: Double
@Binding var upperValue: Double
public var minimumValue: Double
public var maximumValue: Double
public init(minimumValue: Double, maximumValue: Double, lowerValue: Double, upperValue: Double) {
self.minimumValue = minimumValue
self.maximumValue = maximumValue
self.lowerValue = lowerValue
self.upperValue = upperValue
}
func makeUIView(context: UIViewRepresentableContext<RSlider>) -> RangeSlider {
let rangeSlider = RangeSlider(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
rangeSlider.addTarget(self, action: #selector(Coordinator.rangeSliderValueChanged(_:)), for: .valueChanged)
return rangeSlider
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func updateUIView(_ uiView: UIControl, context: UIViewRepresentableContext<RSlider>) {
}
class Coordinator: NSObject {
var control: RSlider
init(_ control: RSlider) {
self.control = control
}
@objc func rangeSliderValueChanged(_ rangeSlider: RangeSlider) {
print("Range slider value changed: (\(rangeSlider.lowerValue) , \(rangeSlider.upperValue))")
self.control.lowerValue = rangeSlider.lowerValue
self.control.upperValue = rangeSlider.upperValue
}
}
}
我在这里错过了什么?
【问题讨论】: