gpt4 book ai didi

swift - 无法在单个 View 中使用 2 个弹出窗口

转载 作者:行者123 更新时间:2023-12-04 12:38:57 25 4
gpt4 key购买 nike

我在 Xcode 11.4.1 中创建了一个使用 Swift 和 SwiftUI 的新单 View 应用程序。该项目有 2 个按钮,带有显示弹出窗口 1 或弹出窗口 2 的选项。我没有收到任何错误,但只有弹出窗口 2 有效。我的代码如下。

我尝试重新排列弹出窗口代码的位置,但并没有什么不同。如果弹出框 1 代码出现在弹出框 2 代码之后,则只有弹出框 1 起作用(而不是只有弹出框 2 起作用)。

import SwiftUI

struct ContentView: View {

@State var popover1IsVisible = false
@State var popover2IsVisible = false

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

Button(action: {
self.popover2IsVisible = true
}) {
Text("Show Popover 2")
}
}

.popover(isPresented: $popover1IsVisible) {
VStack {
Text("Popover1")
Button(action: {
self.popover1IsVisible = false
}) {
Text("OK")
}
}
}

.popover(isPresented: $popover2IsVisible) {
VStack {
Text("Popover 2")
Button(action: {
self.popover2IsVisible = false
}) {
Text("OK")
}
}
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

最佳答案

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

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")
}
}
}
}
}
}

enter image description here

关于swift - 无法在单个 View 中使用 2 个弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61465746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com