【发布时间】:2020-05-24 17:36:25
【问题描述】:
我尝试通过设置变量来关闭弹出框,将其显示为 false。
示例代码的行为很奇怪。 有没有更好的方法可以使用取消按钮以编程方式关闭弹出框?
import SwiftUI
struct ContentView: View {
let lines = ["line 1", "line 2","line 3"]
var body: some View {
List {
ForEach(lines, id: \.self)
{ Line(text: $0)
}
}
}
}
struct Line: View {
@State var text: String
@State var showSheet = false
var body: some View {
VStack
{ Text("\(text)")
.onTapGesture {
self.showSheet = true
}
}.popover( isPresented: self.$showSheet,
arrowEdge: .trailing
)
{ Pop(showSheet: self.$showSheet)
}
}
}
struct Pop: View {
@Binding var showSheet: Bool
var body: some View {
VStack {
Text("Option 1")
Text("Option 2")
Button("Cancel")
{ self.showSheet = false
}
}
}
}
【问题讨论】:
-
我在 iPhone 11 模拟器中运行 Xcode 版本 11.3.1 (11C504) 中的示例代码。不可能多次点击和关闭。在设备上运行良好 - 可能是模拟器问题
标签: macos swiftui popover nspopover