我正在尝试将UISegmentedControl集成到我的视图中,效果很好。但是我想在控件的索引更改时更新SwiftUI ContentView。
为此,我想创建一个协调器,用于通过绑定访问ContentView的状态。
我关注了官方
(与分钟13:37相关),但是当我尝试实现Coordinator类的init函数时,抛出了一个错误,提示“无法分配给属性:'$ textString'是不可变的”。
import SwiftUI
import UIKit
struct SegControl: UIViewRepresentable {
class Coordinator: NSObject {
@Binding var textString: String
init(textString: Binding<String>) {
//Error: Cannot assign to property: '$textString' is immutable
$textString = textString
}
@objc func testFunc() {
textString = "Updated!"
}
}
@Binding var textString: String
func makeCoordinator() -> Coordinator {
return Coordinator(textString: $textString)
}
func makeUIView(context: Context) -> UISegmentedControl {
return UISegmentedControl(items: ["One", "Two"])
}
func updateUIView(_ uiView: UISegmentedControl, context: Context) {
uiView.center = uiView.center
uiView.selectedSegmentIndex = 0
uiView.addTarget(context.coordinator, action: #selector(Coordinator.testFunc), for: .valueChanged)
}
}