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