微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

登录后的SwiftUI导航

如何解决登录后的SwiftUI导航

我准备了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()
        }
    }
}

解决方法

每个导航堆栈只能有一个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中进行了测试。

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。