我知道这个问题以前曾被问过和回答过。不知道这在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()
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据建议进行更新,这可行。似乎有太多关于我的书,希望对此进行更新。
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Beta 6
使用presentationMode从@Environment。
struct SomeView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Ohay!")
Button("Close") {
self.presentationMode.wrappedValue.dismiss()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |