描述性示例:
登录屏幕,用户点击“登录”按钮,执行请求,UI显示等待指示器,然后在成功响应后,我想自动将用户导航到下一个屏幕。
如何在SwiftUI中实现这种自动转换?
成功登录后,可以使用登录视图替换下一个视图。例如:
struct LoginView: View { var body: some View { ... } } struct NextView: View { var body: some View { ... } } // Your starting view struct ContentView: View { @EnvironmentObject var userAuth: UserAuth var body: some View { if !userAuth.isLoggedin { LoginView() } else { NextView() } } }
您应该在数据模型中处理登录过程,并使用绑定(例如)@EnvironmentObject传递isLoggedin到视图。
@EnvironmentObject
isLoggedin
注意: 在Xcode中 11.0版测试4 ,以符合协议 “BindableObject” 的 willChange 属性已被添加
import Combine class UserAuth: ObservableObject { let didChange = PassthroughSubject<UserAuth,Never>() // required to conform to protocol 'ObservableObject' let willChange = PassthroughSubject<UserAuth,Never>() func login() { // login request... on success: self.isLoggedin = true } var isLoggedin = false { didSet { didChange.send(self) } // willSet { // willChange.send(self) // } } }