【发布时间】:2021-07-19 05:21:29
【问题描述】:
我有一个带有NavigationLink 的视图。这个NavigationLink 是一个“注销”按钮,所以当用户点击它时,我不希望他们能够点击NavigationBar 中的"Back" 按钮。有没有办法以编程方式更改视图,并删除“父”视图。
这是带有注销按钮的视图:
struct SettingsView: View {
@State private var didLogout: Bool = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Login(), isActive: $didLogout) {
Button(action: {
//logout code here
self.didLogout = true
}) {
Text("Logout")
}
}
}
}
}
}
这是登录视图(用户退出时我推送到的视图):
struct Login: View {
//Login states
@State var isActive = false
@State var attemptingLogin = false
@State var didLoginFail = false
var body: some View {
NavigationView {
VStack {
if (attemptingLogin == true) {
ProgressView()
.progressViewStyle(CircularProgressViewStyle())
}
NavigationLink(destination: blah(), isActive: $isActive) {
Button(action: {
attemptingLogin = true
blah.Login() { didLogin in
if didLogin == true {
self.isActive = true
} else {
self.isActive = false
self.didLoginFail = true
self.attemptingLogin = false
}
}
}) {
Text("Login")
}
}
}.padding()
}
}
}
我删除了一些问题不需要的代码。任何帮助将不胜感激,因为我在网上找不到任何关于这个问题的东西。我觉得我的查询措辞不正确,因为我相信很多人在使用 SwiftUI 之前遇到过这个问题。
如我所说,是否有办法“忘记” NavigationView 的历史,并将其视为堆栈中的顶部视图?
【问题讨论】:
标签: ios swift swiftui navigationview