弹出后的工作表

时间:2020-06-22 13:16:26

标签: swiftui ios13

我有一个按钮,我要在该按钮上显示两个视图,一个带有弹出窗口,一个带有工作表。 需要从弹出窗口的内容中触发带有工作表I的演示。 不幸的是,这不起作用,我收到以下错误:

2020-06-22 16:06:54.498830 + 0300 actionsheetpopover [66042:605785]警告:尝试在<< em> TvGC7over10UI11 上显示<< em> TtGC7SwiftUIP13 $ 7fff2c9bdf5c22SheetHostingControllerVS_7AnyView :0x7f81a590b9c0> :0x7f81a5909700>已经显示<< em> TtGC7SwiftUI19UIHostingControllerVS_7AnyView :0x7f81a0d0b4f0>

预期的行为:我按:“显示弹出窗口”,出现弹出窗口中的视图,然后按:“关闭弹出窗口并打开模式”,弹出窗口被关闭,并显示工作表中的视图。

struct ContentView: View {
    @State var showPopover = false
    @State var showModal = false
    
    var body: some View {

        Button(action: {
            self.showPopover = true
        }) {
            Text("Show popover")
        }
        .popover(isPresented: $showPopover) {
            Button(action: {
                self.showPopover = false
                self.showModal = true
            }) {
                Text("Close popover and open modal")
            }
        }
        .sheet(isPresented: $showModal) {
            Text("Modal")
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要花些时间关闭弹出窗口,因此请尝试以下操作

Button(action: {
    self.showPopover = false
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
      self.showModal = true
    }
}) {
    Text("Close popover and open modal")
}