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:从模态框内转到新视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 - 在SwiftUI中显示模态视图

从 swiftUI 中的另一个视图中关闭模态视图

从弹出框呈现模态视图控制器

从模态视图使用 NavigationLink 的 SwiftUI 推送视图

如何打开模态框并在模态框内切换 iframe src

bootstrap下使用模态框,在模态框内输入框中回车时,模态框自动关闭的问题及解决方法