SwiftUI ForEach 循环未实时更新

Cha*_*hal 3 foreach xcode swift swiftui

我使用 ForEach 循环遍历保存的用户输入数组并显示这些输入,这会正确显示所有内容,除非我向该数组添加新输入,否则不会显示新项目,除非我导航到另一个视图然后来后退。

我已经尝试了一切,从用 .self 更改 .id ,但没有任何效果。

大家有什么想法吗?谢谢你!

编辑:看起来是我的工作表阻止了我的视图更新,我尝试简单地在我的视图中添加工作表代码,现在 ForEach 实时更新,关于工作表如何进入视图,我是否缺少一些东西方式?

struct AnswersView: View {
@EnvironmentObject var vm: BrainstormViewModel
@Environment(\.presentationMode) var presentationMode
@State var mBIndex: Int
@State var substitute: [String] = []
@State var showSheet: Bool = false
@State var updater: Bool = false
var body: some View {
    ScrollView {
        VStack(alignment: .leading) {
            Text("How could I...")
            Text(vm.brainstormArray[mBIndex].title)
                .font(.system(size: 32, weight: .bold, design: .rounded))
                .multilineTextAlignment(.leading)
            Button {
                showSheet.toggle()
            } label: {
                ButtonSubview(icon: "play.fill", text: "Continue brainstorm")
                    .environmentObject(BrainstormViewModel())
            }

            ForEach(vm.brainstormArray[mBIndex].answersArray, id: \.self) { index in

                Text(index.name)
                    .font(.system(size: 20, weight: .bold, design: .rounded))
                    .padding(.top, 30)
                HStack {
                    Text(index.answer[0])

                        .padding()

                    Spacer()
                }

                .background(Color.MyTheme.orangeLight)
                .cornerRadius(16)
            }
        }

        .fullScreenCover(isPresented: $showSheet) {
            BrainstormView(mBIndex: mBIndex)
        }

        .navigationBarTitleDisplayMode(.inline)
    }
    .frame(maxWidth: .infinity)
    .padding()
    .background(Color.white)
}
Run Code Online (Sandbox Code Playgroud)

}

Chr*_*isR 7

无论您在何处更改数据,请插入:

vm.objectWillChange.send()
Run Code Online (Sandbox Code Playgroud)