首页 > 解决方案 > NavigationLink 在导航到另一个视图时可以执行异步功能吗?

问题描述

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

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

我应该以不同的方式解决这个问题吗?

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

标签: swiftuiswiftui-navigationlinkswiftui-navigationview

解决方案


您可以使用 navigationLink 的选择参数

添加这个变量

@State var trigger: Bool? = nil

并使用

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

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


推荐阅读