我正在尝试在子视图和父视图之间建立 SwiftUI 连接。通过单击任何子视图,我只想重绘已被点击的视图,而不是整个父视图。
下面的当前实现不允许您在单击时重绘视图,因为它具有派生值。
我通过将BindableObject协议添加到 尝试了不同的场景CustomColor,但没有成功。
class CustomColor: Identifiable {
let id = UUID()
var color: Color
init(color: Color) {
self.color = color
}
func change(to color: Color) {
self.color = color
}
}
class ColorStore: BindableObject {
var colors: [CustomColor] = [] {
didSet {
didChange.send(self)
}
}
var didChange = PassthroughSubject<ColorStore, Never>()
init() {
self.colors = Array.init(repeating: CustomColor(color: .red), count: 10)
}
}
struct ContentView: View {
@EnvironmentObject var colorStore: ColorStore
var body: some …Run Code Online (Sandbox Code Playgroud) swiftui ×1