SwiftUI:从模态框内转到新视图
Posted
技术标签:
【中文标题】SwiftUI:从模态框内转到新视图【英文标题】:SwiftUI: Go to a new view from inside a modal 【发布时间】:2020-06-11 04:07:42 【问题描述】:我想从我的模态框内转到一个新视图。
目前我有我的默认视图。然后我展示我的模态。在那个模式中,我可以关闭它,但我还有一个按钮,我想带我到另一个视图。 (新视图)
这可能吗?
默认视图:
import SwiftUI
struct ContentView: View
@State private var showModal = false
var body: some View
Button("Show Modal")
self.showModal.toggle()
.sheet(isPresented: $showModal)
ModalView(showModal: self.$showModal)
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
模态视图:
struct ModalView: View
@Binding var showModal: Bool
var body: some View
VStack (spacing: 30)
Text("My Modal View")
.font(.title)
.padding()
Button("Close modal")
self.showModal.toggle()
Button("Close modal and go to a new view")
新视图:
struct NewView: View
var body: some View
Text("My New View")
【问题讨论】:
带你到一个新的视野,但是哪个方向?是指另一个模态或类似于 NavigationView 的? 它必须关闭模式然后加载可能在 NavigationView 中的新视图。 知道了,请参考我回答的第二部分。 【参考方案1】:我以两种不同的方式理解您的问题,幸运的是我有两种解决方案。
如果你想要以下流程:ViewA -> Opens ViewB As modal -> opens ViewC as NavigatedView in ViewB
那么你只需要把你的ModalView
改成这个
struct ModalView: View
@Binding var showModal: Bool
var body: some View
NavigationView
VStack (spacing: 30)
NavigationLink(destination: NewView())
Text("Take me to NewView")
Text("My Modal View")
.font(.title)
.padding()
Button("Close modal")
self.showModal.toggle()
Button("Close modal and go to a new view")
如果你的意思是 ViewA -> 打开 ViewsB 作为 Moda -> ViewB 然后告诉 ViewA 导航到 ViewC
然后请参考这个链接,之前有人问过这个问题,我提供了解决方案
SwiftUI transition from modal sheet to regular view with Navigation Link
【讨论】:
谢谢穆汉德。第二个选项效果很好,因为它关闭了模式然后移动到下一个视图。再次感谢!! 太棒了!请考虑将答案标记为正确,以便其他人受益。祝你好运!以上是关于SwiftUI:从模态框内转到新视图的主要内容,如果未能解决你的问题,请参考以下文章