3

这一直工作到 beta 7。似乎当我想将集合中的一个元素作为绑定传递到另一个视图时,预览会被破坏

我遵循了发布说明,其中说@Binding 不再符合集合协议 注释在底部

我在 beta 7 中有 Catalina 和 xcode

家长:

struct SimpleStructure {
    var label: String
}

struct ContentView: View {
    @State private var myVariables = [SimpleStructure(label: "hello")]

    var body: some View {
        ChildView(myVariables: $myVariables)
    }
}

孩子

struct ChildView: View {
    @Binding var myVariables: [SimpleStructure]
    var body: some View {
        List(myVariables.indexed(), id: \.1.label) {(index, variable) in
            GrandChildView(myVariable: self.$myVariables[index])
        }
    }
}

孙子

struct GrandChildView: View {
    @Binding var myVariable:SimpleStructure
    var body: some View {
        Text(myVariable.label)
    }
}

更新:

Beta 8 仍然存在问题

4

3 回答 3

3

发行说明有一个错字。你需要改变:

var endIndex: Index { base.startIndex }

var endIndex: Index { base.endIndex }
于 2019-08-29T20:03:17.370 回答
0

不知道,这个解决了你吗?如果没有,也许这会有所帮助:

struct ChildView: View {
    @Binding var myVariables: [SimpleStructure]

    var body: some View {
        List(myVariables.indices) { index in
            GrandChildView(myVariable: self.$myVariables[index])
        }
    }
}

如果已解决,请标记正确答案,或自行在此处提供解决方案,以防您在此期间找到了解决方案。

于 2019-09-07T20:14:13.253 回答
0

该问题已在 SwiftUI Beta 10 中修复

于 2019-10-07T12:54:29.613 回答