转换不适用于 SwiftUI 中的路由器

埃尔文

我正在制作一个基于 SwiftUI 的应用程序。

我在主层次结构中嵌入了一个路由器来管理应用程序导航。一开始这运行良好,但后来我添加了第二级路由器,转换被破坏并停止工作。

实际上,两个路由器中的导航都运行良好,但无法使其与转换一起工作。

应用根目录转到此文件:

var body: some View {
    VStack {
        if authRouter.isFirstLaunch {
            AuthView()
        } else if sessionState.launchListeningCompleted || sessionState.user != nil || sessionState.error != nil {
            Home()
        } else {
            ZStack {
                Image("Icon")
                VStack {
                    Spacer()
                    ActivityIndicatorUI(animating: .constant(true), style: .medium)
                        .padding(.bottom)
                    Image("Launcher")
                        .padding(.bottom, 95.0)
                        .padding(.top)
                }
            }
        }
    }.onAppear(perform: isFirstLaunch)
}

本质上,如果是第一次启动应用程序,它将转到 AuthView 文件,它是一个像这样的路由器:

struct AuthView: View {

@EnvironmentObject var authRouter: AuthRouter

var body: some View {
    VStack {
        if authRouter.viewName == AuthViews.Onboarding {
            Onboarding()
        } else if authRouter.viewName == AuthViews.SignIn {
            SignIn()
                .transition(.scale)
        } else if authRouter.viewName == AuthViews.SignUp {
            SignUp()
                .transition(.move(edge: .trailing))
        } else if authRouter.viewName == AuthViews.ForgotPassword {
            ForgotPassword()
                .transition(.move(edge: .trailing))
        }
    }
}

}

这些转换不起作用。一开始,这是我添加的第一个路由器,它正在工作。然后在第二级它停止工作。

感谢帮助!

他的脾气

将动画添加到父容器

var body: some View {
    VStack {
        if authRouter.viewName == AuthViews.Onboarding {
            Onboarding()
        } else if authRouter.viewName == AuthViews.SignIn {
            SignIn()
                .transition(.scale)
        } else if authRouter.viewName == AuthViews.SignUp {
            SignUp()
                .transition(.move(edge: .trailing))
        } else if authRouter.viewName == AuthViews.ForgotPassword {
            ForgotPassword()
                .transition(.move(edge: .trailing))
        }
    }.animation(.default)     // << here !! (any animation you like)
}

并确保authRouter.viewName始终在 上更新DispatchQueue.main

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SwiftUI·后台计时器适用于模拟器,但不适用于真实设备

BrowserHistory不适用于反应路由器

查询参数不适用于ui路由器

路由器链接不适用于共享模块中的组件

默认插槽或命名插槽不适用于 Vue 3 中的“路由器视图”

为什么文本 onTapGesture 不适用于 SwiftUI 中的加宽框架?

SwiftUI - AppStorage 不适用于 GeometryReader

OnClick()不适用于货币转换器。

转换器适用于 RequestParameter 但不适用于 RequestBody 字段

android 中的 MotionLayout 不适用于多个 OnClick 转换

CSS 转换不适用于 React 中的条件渲染

播放框架Javascript路由器不适用于其他目录中的控制器

验证器不适用于 AdonisJS 中的资源路由

反应路由器-NavLink activeStyle或activeClassName不适用于嵌套路由

Angular 2路由器辅助路由不适用于redirectTo

更新路由不适用于合并的Express路由器参数

SwiftUI在NavigationView中添加个人警报视图,后退按钮不适用于Xcode 12 iOS14

Vue过渡不适用于具有可重用组件的路由器视图

反应路由器-带:id的路径不适用于HOC包装的组件

角度6:路由器参数不适用于服务

Mule Munit测试用例不适用于APIKit路由器流

样式表不适用于使用chi路由器的go html模板

反应路由器 history.push() 不适用于 history.listen()

Traefik 2.0-路径路由器规则不适用于docker标签

路由器不适用于 Link(React Router Dom 6)

Django Viewset 检索不适用于默认路由器

activeClassName不适用于可变路径的反应路由器

我的快递路由器发帖请求不适用于邮递员

Express 路由器不适用于猫鼬。这是说用户未定义