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