【问题标题】:SwiftUI Xcode 11 beta 7 @Binding for collections is breaking previewSwiftUI Xcode 11 beta 7 @Binding for collections 正在打破预览
【发布时间】:2019-08-29 16:00:12
【问题描述】:

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

我遵循了发布说明 @Binding 不再符合收集协议 comments are at the bottom

我在 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 仍然存在问题

【问题讨论】:

    标签: xcode macos swiftui xcode11 macos-catalina


    【解决方案1】:

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

    var endIndex: Index { base.startIndex }
    

    var endIndex: Index { base.endIndex }
    

    【讨论】:

    • 不错的收获!修复错字后,错误似乎仍然存在。
    【解决方案2】:

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

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

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

    【讨论】:

    • 使用.indices仍然无法使用
    【解决方案3】:

    该问题已在 SwiftUI Beta 10 中得到修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-02
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      相关资源
      最近更新 更多