SWIFTUI:在视图中导航并返回
Posted
技术标签:
【中文标题】SWIFTUI:在视图中导航并返回【英文标题】:SWIFTUI : navigate in view and go back 【发布时间】: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)))
谢谢
【问题讨论】:
我建议添加一些代码来演示您的问题。 我已经编辑了我的第一篇文章 【参考方案1】:我无法测试您的代码(由于缺少自定义内容),因此请根据经验尝试以下操作
为每个带有过渡的视图使用显式条件 使过渡动画化 使容器保持动画化如下图(略)
var body: some View
VStack
if userSignup.page >= 1
SignupView()
.transition(AnyTransition.asymmetric(insertion: .move(edge: .trailing),
removal: .move(edge: .leading)).animation(.default))
if userSignup.page == 0
LoginView()
.transition(AnyTransition.asymmetric(insertion: .move(edge: .leading),
removal: .move(edge: .trailing)).animation(.default))
.animation(.default)
【讨论】:
我有这个代码***.com/questions/59502896/…,当我想使用 sessionStore.session 来更改视图显示时,什么都没有发生...... 我发现,我没有返回信息,它只是一个本地变量...我怎样才能获得表示用户已登录的变量?以上是关于SWIFTUI:在视图中导航并返回的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI中NavigationLink多层嵌套导航无法返回上一层的原因及解决