SwiftUI:从模式内部进入新视图

时间:2020-06-11 04:07:42

标签: ios swiftui

我想从模态内部进入一个新的视图。

目前,我有默认视图。然后,我介绍我的模态。在该模式下,我可以关闭它,但是我还有另一个按钮,希望将我带到另一个视图。 (NewView)

这可能吗?

默认视图:

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") {



            }

        }
    }
}

NewView:

struct NewView: View {

    var body: some View {

       Text("My New View")
    }
}

1 个答案:

答案 0 :(得分:1)

我以两种不同的方式理解了您的问题,幸运的是,我有两种解决方案。

如果需要以下流程:ViewA->以模态打开ViewB->在ViewB中以NavigatedView形式打开ViewC

那么您只需更改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->以Moda形式打开ViewsB-> ViewB然后告诉ViewA导航到ViewC

然后请参考此链接,有人早些时候问了这个问题,我提供了解决方法

SwiftUI transition from modal sheet to regular view with Navigation Link