使用ObservableObject使用SwiftUI

时间:2019-09-04 15:54:57

标签: swift swiftui swift5

我正在尝试创建逻辑,一旦用户输入了凭据,该逻辑就会将用户发送到正确的视图。在登录页面中,当用户登录时,他们会获得可用于调用API的令牌。我将该令​​牌存储在KeychainSwift中。然后,我可以检查存储的字段是否具有不为null且不为空的条目,以将用户路由到主页。我使用thisthis之类的逻辑将我路由到正确的视图。

我的内容查看代码如下:

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
        }
    }
}

我试图实现的总体架构是这样的: enter image description here

问题在于,没有从视图直接路由到另一个视图的直接方法,因此为什么我诉诸于使用ContentView中显示的逻辑。我有类似的登录逻辑。我有一个视图(loginformview),可以将您路由到登录表单视图或主页视图。但是,一旦您登录了登录表单,我将需要返回到存在检查的上一个视图(loginformview),以查看是否应该返回登录页面或转到主页(这次将您发送至主页) 。似乎非常周期性,有人有任何想法来适当应对这种逻辑吗?

0 个答案:

没有答案