【问题标题】:Can a NavigationLink perform an async function when navigating to another view?NavigationLink 在导航到另一个视图时可以执行异步功能吗?
【发布时间】:2021-04-24 06:57:05
【问题描述】:

我正在尝试在 SwiftUI 中创建一个导航链接,用于登录用户并导航到下一个屏幕。

我已经尝试使用 .simultaneousGesture,如下所示,基于 this solution。当我让它执行一个简单的操作(例如 print("hello"))时,代码可以正常工作并导航到下一页,但是当我让它执行我的 authState.signUp 函数(它是异步的)时,它会调用该函数但不导航到下一页。

我应该以不同的方式处理这个问题吗?

NavigationLink(destination: NextView()) {
    Text("Create account")
}
.simultaneousGesture(TapGesture().onEnded {
    authState.signUp(user: user)
})

【问题讨论】:

    标签: swiftui swiftui-navigationlink swiftui-navigationview


    【解决方案1】:

    您可以使用 navigationLink 的选择参数

    添加这个变量

    @State var trigger: Bool? = nil
    

    并使用

    NavigationLink(destination: NextView(), tag: true,
                                       selection: $trigger ) {
    }
    

    当您的其他工作(登录)完成时,toggle() 触发器和 navigationLink 就会触发。

    【讨论】:

    • 谢谢!我最终使用了一种非常相似的策略来设置触发器状态变量,但我使用 isActive 而不是 NavigationLink 中的标记和选择。
    • 非常乐意提供帮助。
    猜你喜欢
    • 2019-12-31
    • 2011-09-08
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多