【发布时间】:2020-04-04 21:25:18
【问题描述】:
我有一个关于 swift 的问题。如何导航到视图?
现在,我的 ContentView 在条件 (if) 中显示启动屏幕、登录或 HomeView。
var body: some View {
VStack {
if (sessionStore.session != nil) {
UserProfileView(userProfile: self.profile ?? UserProfile(uid: "", firstName: "", lastName: "", birth: "", email: "", phone: ""))
} else if show || UserDefaults.standard.bool(forKey: initialLaunchKey){
AuthentificationView().transition(.move(edge: .bottom))
} else {
PageViewContainer( viewControllers: Page.getAll.map({ UIHostingController(rootView: PageView(page: $0) ) }), presentSignupView: { withAnimation { self.show = true }; UserDefaults.standard.set(true, forKey: self.initialLaunchKey) }).transition(.scale)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.backgroundColor)
.onTapGesture { UIApplication.shared.endEditing() }
}
但是如果我在 LoginView 中,即使我在 contentView 中对 HomeView 的条件为真,我也不会去 HomeView...
我通过可观察对象中的 var 导航到视图(页面 =1 然后页面 =2...)我认为这不是更好的方法...
struct AuthentificationView: View {
@EnvironmentObject var userSignup: UserSignup
var body: some View {
VStack {
if (userSignup.page >= 1) {
SignupView()
.transition(.asymmetric(insertion: .move(edge: .trailing), removal: .move(edge: .leading)))
} else {
LoginView()
.transition(.asymmetric(insertion: .move(edge: .leading), removal: .move(edge: .trailing)))
}
}
}
}
谢谢
【问题讨论】:
-
我建议添加一些代码来演示您的问题。
-
我已经编辑了我的第一篇文章