【发布时间】:2019-07-26 06:03:31
【问题描述】:
我知道以前有人问过这个问题并回答过。不确定这是否在 SwiftUI 的 Beta 4 中发生了变化/损坏,但我似乎无法让 isPresented 解决方案来消除以 sheet 显示的模式。
这是我尝试过的一个简单示例,我认为这会起作用,但是单击“关闭”什么也没做,当我检查 self.isPresented?.value 时,它是 nil。
struct DetailView: View {
@Environment(\.isPresented) var isPresented: Binding<Bool>?
var body: some View {
Button(action: {
self.isPresented?.value = false
}) {
Text("Close")
}
}
}
struct ContentView: View {
@State private var showingModal = false
var body: some View {
Button(action: {
self.showingModal = true
}) {
Text("Show detail")
}.sheet(isPresented: $showingModal) {
DetailView()
}
}
}
根据建议进行更新,这行得通。对我来说似乎记太多了,希望能得到更新。
struct DetailView: View {
@Binding var showingModal: Bool
var body: some View {
Button(action: {
self.showingModal = false
}) {
Text("Close")
}
}
}
struct ContentView: View {
@State private var showingModal = false
var body: some View {
Button(action: {
self.showingModal = true
}) {
Text("Show detail")
}.sheet(isPresented: $showingModal) {
DetailView(showingModal: self.$showingModal)
}
}
}
【问题讨论】:
-
是的,beta 4 似乎打破了这一点。请在此处查看我的答案(靠近底部),了解如何设置关闭按钮)。 stackoverflow.com/questions/57148220/…
-
“对我来说,记账似乎太多了”所有这些真理来源的言辞都非常漂亮,但是对于像
dismiss这样的命令,还是有话要说的。