每次更新 ContentView 都会重新创建 FullScreenCover 中的 ChildView

问题描述

我有一个关于下一个行为的问题。

我有 ContentView 带有传递相应视图模型的视图列表。用户可以点击某个视图。此时将根据传递的类型显示全屏模态对话框。没关系。 有时我的视图模型正在更新,整个 ContentView 将被重新加载。问题是:调用 fullScreenCover 并重新创建 ChildEventView。如何防止重新创建 ChildEventView

struct ContentView: View {

    @State private var fullScreenType: FullScreenType?

    // some stuff

    var body: some View {
        ScrollView {
            Lazyvstack {
                ForEach(eventListviewmodel.cardStates.indices,id: \.self) { index in
                    let eventVM = eventListviewmodel.eventVMs[index]
                    EventCardView(eventviewmodel: eventVM,eventId: $selectedEvent.eventId) {
                        self.fullScreenType = .type1
                    }
                    // some other views
                }
            }
        }  
        .fullScreenCover(item: $fullScreenType,ondismiss: {
            self.fullScreenType = nil
        },content: { fullScreenType in
            switch fullScreenType {
                case .type1:
                return ChildEventView(selectedEvent.eventId).erasetoAnyView()
                // some other cases
            } 
        })
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)