【问题标题】:SwiftUI: Go to a new view from inside a modalSwiftUI:从模态框内转到新视图
【发布时间】: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 中的新视图。
  • 知道了,请参考我回答的第二部分。

标签: ios swiftui


【解决方案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

【讨论】:

  • 谢谢穆汉德。第二个选项效果很好,因为它关闭了模式然后移动到下一个视图。再次感谢!!
  • 太棒了!请考虑将答案标记为正确,以便其他人受益。祝你好运!
猜你喜欢
  • 2020-01-17
  • 2019-10-19
  • 1970-01-01
  • 2022-10-22
  • 2020-09-30
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2022-10-19
相关资源
最近更新 更多