登录后的SwiftUI导航

时间:2020-08-29 07:33:42

标签: swiftui swiftui-navigationlink

我准备了2个正在签名的视图和主视图。用户签名到主视图后,我试图弹出/隐藏签名视图。

现在的问题是视图允许用户单击“后退”按钮以返回登录视图。我不知道该如何解决。谁能给我一些提示吗?

这是我的登录导航代码:

NavigationLink(destination: HomePageView(), tag: 1, selection: $selection) {
    Button(action: {
        print("Register tapped")
        self.verify()
        self.selection = 1
    }) {
        HStack {
            Text("OK").foregroundColor(Color.white).bold().foregroundColor(.white)
                .frame(width: UIScreen.main.bounds.width - 30, height: UIScreen.main.bounds.height / 12)
                .background(Color.orange)
                .cornerRadius(35.0)
                .font(.headline)
                .padding()
        }
    }
}

2 个答案:

答案 0 :(得分:1)

每个导航堆栈只能有一个NavigationView。您需要除去顶部的所有嵌套的NavigationViews。在您的子视图中,您仍然可以修改顶部的视图。

这是一个简单的演示:

struct LoginView: View {
    @State private var active: Bool = false

    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: HomeView(), isActive: self.$active) {
                    Text("Register")
                }
            }
            .navigationBarTitle("Login View")
        }
    }
}

struct HomeView: View {
    var body: some View {
        Text("inside home view")
            .navigationBarTitle("Home view")
            .navigationBarBackButtonHidden(true)
    }
}

在Xcode 11.6,iOS 13.6中进行了测试。

答案 1 :(得分:0)

您似乎需要FullScreenCover而不是其他视图。这样一来,您将能够仅根据需要轻松呈现和消除视图。 要获得比我在这里无法解释的更完整的信息,请查看Paul Hudson在他的网站上的解释: https://www.hackingwithswift.com/quick-start/swiftui/how-to-present-a-full-screen-modal-view-using-fullscreencover