説明例:
ログイン画面で、ユーザーが「ログイン」ボタンをタップし、リクエストが実行され、UI に待機インジケーターが表示されます。その後、応答が成功したら、ユーザーを自動的に次の画面に移動したいと思います。
SwiftUI でこのような自動遷移を実現するにはどうすればよいですか?
ベストアンサー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、プロトコルに従う'バインド可能なオブジェクト'の変更されますプロパティを追加する必要があります
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)
// }
}
}