Вы можете использовать ZStack для наложения различных фрагментов контента и условно выбирать, какие из них видимы.
struct ContentView: View {
@State var isLoggedIn = false
var body: some View {
ZStack {
if self.isLoggedIn {
Text("You're In!")
} else {
LoginView(isLoggedIn: self.$isLoggedIn)
}
}
}
}
Где LoginView обновляет состояние, чтобы указать действительный логин.
struct LoginView: View {
@Binding var isLoggedIn: Bool
var body: some View {
Button("Log in") {
self.isLoggedIn = true
}
}
}
Поскольку SwiftUI представляет представления как функцию состояния, l oop не работает, чтобы представить представление входа в систему и затем передать другому контенту. Вместо этого описывается весь возможный контент, и при каждом изменении @State представления воссоздаются, чтобы соответствовать текущим значениям.