Swift 无法在单个视图中使用2个弹出框

Swift 无法在单个视图中使用2个弹出框,swift,swiftui,popover,Swift,Swiftui,Popover,我在Xcode 11.4.1中创建了一个新的单视图应用程序,它使用Swift和SwiftUI。该项目有两个按钮,可选择显示popover 1或popover 2。我没有收到任何错误,但只有popover 2工作。我的代码如下 我试着重新排列popover代码的位置,但没什么不同。如果popover 1代码出现在popover 2代码之后,则只有popover 1工作(而不是只有popover 2工作) 不能将两个弹出框附加到一个视图(VStack)。将每个popover附加到不同的视图。您可以将

我在Xcode 11.4.1中创建了一个新的单视图应用程序,它使用Swift和SwiftUI。该项目有两个按钮,可选择显示popover 1或popover 2。我没有收到任何错误,但只有popover 2工作。我的代码如下

我试着重新排列popover代码的位置,但没什么不同。如果popover 1代码出现在popover 2代码之后,则只有popover 1工作(而不是只有popover 2工作)


不能将两个弹出框附加到一个视图(VStack)。将每个popover附加到不同的视图。您可以将
.popover
附加到
按钮

您不能将
.popover
添加到视图中两次。尝试使用它一次,并根据单击的按钮动态构建popover视图

struct ContentView: View {

    @State var showPopover = false
    @State var popover1IsVisible : Bool = false
    @State var popover2IsVisible : Bool = false

    var body: some View {
        VStack {
            Button(action: {
                self.showPopover = true
                self.popover1IsVisible = true
            }) {
                Text("Show Popover 1")
            }

            Button(action: {
                self.showPopover = true
                self.popover2IsVisible = true
            }) {
                Text("Show Popover 2")
            }
        }
        .popover(isPresented: $showPopover) {
            VStack {
                if (self.popover1IsVisible)
                {
                    //Show first view
                    Text("Popover1")
                    Button(action: {
                        self.showPopover = false
                        self.popover1IsVisible = false
                    }) {
                        Text("OK")
                    }
                }
                else
                {
                    //Show secondview
                    Text("Popover 2")
                    Button(action: {
                        self.showPopover = false
                        self.popover2IsVisible = false
                    }) {
                        Text("OK")
                    }
                }
            }
        }
    }
}

这真的帮了我大忙!非常感谢。我将popover放在通用视图中,然后根据单击的按钮操作变量
struct ContentView: View {

    @State var showPopover = false
    @State var popover1IsVisible : Bool = false
    @State var popover2IsVisible : Bool = false

    var body: some View {
        VStack {
            Button(action: {
                self.showPopover = true
                self.popover1IsVisible = true
            }) {
                Text("Show Popover 1")
            }

            Button(action: {
                self.showPopover = true
                self.popover2IsVisible = true
            }) {
                Text("Show Popover 2")
            }
        }
        .popover(isPresented: $showPopover) {
            VStack {
                if (self.popover1IsVisible)
                {
                    //Show first view
                    Text("Popover1")
                    Button(action: {
                        self.showPopover = false
                        self.popover1IsVisible = false
                    }) {
                        Text("OK")
                    }
                }
                else
                {
                    //Show secondview
                    Text("Popover 2")
                    Button(action: {
                        self.showPopover = false
                        self.popover2IsVisible = false
                    }) {
                        Text("OK")
                    }
                }
            }
        }
    }
}