小编典典

以编程方式导航到SwiftUI中的新视图

swift

描述性示例:

登录屏幕,用户点击“登录”按钮,执行请求,UI显示等待指示器,然后在成功响应后,我想自动将用户导航到下一个屏幕。

如何在SwiftUI中实现这种自动转换?


阅读 299

收藏
2020-07-07

共1个答案

小编典典

成功登录后,可以使用登录视图替换下一个视图。例如:

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到视图。

注意: 在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)
    // }
  }
}
2020-07-07