使用ObserveObject使用SwiftUI导航到不同的视图
我试图创建一个逻辑,一旦用户输入了他们的凭证,它就会将用户发送到正确的视图。在登录页面中,当用户登录时,他们会获得一个可用于调用API的令牌。我把那个代币储存在钥匙链里。然后,我可以检查存储它的字段是否有一个不为null且不为空的条目,以将用户路由到主页。我用逻辑像和来引导我到正确的观点 我的内容视图代码如下:使用ObserveObject使用SwiftUI导航到不同的视图,swift,swiftui,swift5,Swift,Swiftui,Swift5,我试图创建一个逻辑,一旦用户输入了他们的凭证,它就会将用户发送到正确的视图。在登录页面中,当用户登录时,他们会获得一个可用于调用API的令牌。我把那个代币储存在钥匙链里。然后,我可以检查存储它的字段是否有一个不为null且不为空的条目,以将用户路由到主页。我用逻辑像和来引导我到正确的观点 我的内容视图代码如下: struct ContentView: View { @ObservedObject var userAuth = UserAuth() var body: some V
struct ContentView: View {
@ObservedObject var userAuth = UserAuth()
var body: some View {
if(self.userAuth.isLoggedIn){
return AnyView(MainPageView())
}else{
return AnyView(AccountPageView())
}
}
}
UserAuth如下所示:
import Combine
class UserAuth: ObservableObject {
// let objectWillChange = ObservableObjectPublisher()
@Published var isLoggedIn: Bool = false;
init() {
let keychain = KeychainSwift()
let userToken = keychain.get("userToken") ?? ""
if(!userToken.isEmpty || userToken != "" ){
self.isLoggedIn = true
}else{
self.isLoggedIn = false
}
}
}
我试图实现的总体架构是:
问题是,没有直接的方法从一个视图路由到另一个视图,因此我求助于使用ContentView中显示的逻辑。我有类似的登录逻辑。我有一个视图(loginformview),可以将您路由到登录表单视图或主页视图。但是,一旦您以登录表单登录,我就需要返回上一个视图(loginformview),在该视图中,检查是否应该返回登录页面或转到主页(这次将您发送到主页)。这似乎是非常周期性的,有人知道如何正确处理这样的逻辑吗?我不回答你的问题,但作为一个建议,如果没有严格必要,你应该避免使用AnyView进行类型擦除。在您的情况下,在ContentView中,这是不必要的。看一看可能的副本