gpt4 book ai didi

SwiftUI 关闭从 NavigationView 呈现的模式表(Xcode Beta 5)

转载 作者:行者123 更新时间:2023-12-03 18:40:34 25 4
gpt4 key购买 nike

我试图关闭通过 .sheet 呈现的模态视图在 SwiftUI 中 - 由 Button 调用在 NavigationView 内小号 navigationBarItems , 如下所示:

struct ModalView : View {

@Environment(\.presentationMode) var presentationMode

var body: some View {
Button(action: {
self.presentationMode.value.dismiss()
}, label: { Text("Save")})
}

}

struct ContentView : View {

@State var showModal: Bool = false

var body: some View {
NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button(action: {
self.showModal = true
}, label: { Text("Add") })
.sheet(isPresented: $showModal, content: { ModalView() })
)
}
}

}

轻按“保存”按钮时,模式不会关闭,它只会保留在屏幕上。摆脱它的唯一方法是在模式上向下滑动。

打印 self.presentationMode.value 的值总是显示 false所以它似乎认为它没有被呈现。

这仅在从 NavigationView 呈现时发生。 .把它拿出来,它工作正常。

我在这里遗漏了什么,还是这是一个测试版问题?

最佳答案

您需要移动 .sheet按钮之外。

NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button("Add") {
self.showModal = true
}
)
.sheet(isPresented: $showModal, content: { ModalView() })
}

您甚至可以将它移到 NavigationView 之外。关闭。
NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button("Add") { self.showModal = true }
)
}
.sheet(isPresented: $showModal, content: { ModalView() })


请注意,如果您有一个简单的文本按钮,您还可以简化 Button 调用。

关于SwiftUI 关闭从 NavigationView 呈现的模式表(Xcode Beta 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440314/

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