首页 > 解决方案 > SwiftUI:在列表中选择项目时模式视图不会关闭

问题描述

使用 SwiftUI,我正在打开一个模态视图,如下所示:

                            Button(action: {
                                self.showingFlightsView.toggle()
                            }) {
                                Image(systemName: "airplane.circle")
                            }
                            .sheet(isPresented: $showingFlightsView) {
                                FlightsView(flights: self.$flights, selectedFlight: self.$selectedFlight, flightPhase: $flightPhase)
                                
                            }

然后尝试以这种方式在列表选择中关闭它:

                                    // MARK: Select flight button
                                    Button(action: {
                                        UserDefaults.standard.set(flight.id, forKey: "selection")
                                        
                                        self.presentationMode.wrappedValue.dismiss()
                                        print("Flight selected: \(flight.id)")
                                        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
                                            self.flightPhase = 0
                                            self.selectedFlight = flight
                                        }
                                    }) {

问题是,如果我不使用 dispatchqueue 的技巧,模式视图不会关闭(除非使用向下滑动)。selectedFlight 是一个可选对象 Flight。如果我用字符串替换它,它可以正常工作。

知道为什么 if 不能与对象正确关闭吗?

标签: swiftswiftuiswiftui-list

解决方案


推荐阅读