SwiftUI-List-UIViewRepresentableWon';不能更新

SwiftUI-List-UIViewRepresentableWon';不能更新,swiftui,Swiftui,在我的列表中,如果UIViewRepresentable是列表中的唯一项,则不会更新它。如果我在其中添加文本,它就会工作。要查看效果,请再次上下滚动。 我做错了什么 这是我的密码: struct Test : UIViewRepresentable { var text : String func makeUIView(context: UIViewRepresentableContext<Test>) -> UILabel { UILabe

在我的列表中,如果UIViewRepresentable是列表中的唯一项,则不会更新它。如果我在其中添加文本,它就会工作。要查看效果,请再次上下滚动。 我做错了什么

这是我的密码:

struct Test : UIViewRepresentable {

    var text : String

    func makeUIView(context: UIViewRepresentableContext<Test>) -> UILabel {
        UILabel()
    }

    func updateUIView(_ uiView: UILabel, context: UIViewRepresentableContext<Test>) {
        uiView.text = text
    }

    typealias UIViewType = UILabel
}

class Data : ObservableObject {

    @Published var names = UIFont.familyNames
}

struct ContentView : View {

    @EnvironmentObject var data : Data

    var body: some View {
        VStack {
            List(data.names, id: \.self) { name in
                Test(text: name)
        //        Text(name)  // as soon as you comment this out, it works
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
结构测试:UIViewRepresentable{ 变量文本:字符串 func makeUIView(上下文:UIViewRepresentableContext)->UILabel{ UILabel() } func updateUIView(uiView:UILabel,context:UIViewRepresentableContext){ uiView.text=文本 } typealias UIViewType=UILabel } 类数据:ObserveObject{ @已发布的变量名称=UIFont.familyNames } 结构ContentView:View{ @环境对象变量数据:数据 var body:一些观点{ VStack{ 列表(data.names,id:\.self){name in 测试(文本:名称) //Text(name)//只要你把它注释掉,它就会工作 } } } } 结构内容视图\u预览:PreviewProvider{ 静态var预览:一些视图{ ContentView() } }
目前我知道可以使用的变体/变通方法(在所有可用的Xcode 11.x上进行了测试)

var主体:一些视图{
VStack{
列表(data.names,id:\.self){name in

Test(text:name).id(name)//当UIViewRepresentable是ListConfirm问题中的唯一视图时,我运行了一份代码副本,一切正常。在版本11.2.1(11B500)上测试。如果列表被ScrollView/ForEach替换,则会正确更新,因此这似乎是列表的问题。是的,这不是一个答案或解决方案,而是缩小问题范围的调查结果。而且,正如(观察视图层次结构)所示,问题完全在重复使用的单元格中。在Xcode 11.3 beta(11C24b)上测试.现在它已更新,但…更新后,虽然它是可见的,但它丢失了前导填充,所以看起来有点难看。我建议提交雷达。
var body: some View {
    VStack {
        List(data.names, id: \.self) { name in
            Test(text: name).id(name) //           << here !!
        }
    }
}