小编Enz*_*rro的帖子

如何在 SwiftUI 中更新单个子视图?

我正在尝试在子视图和父视图之间建立 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

6
推荐指数
1
解决办法
9956
查看次数

标签 统计

swiftui ×1