Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NavigationLink有条件地导航?_Ios_Swiftui - Fatal编程技术网

Ios 使用NavigationLink有条件地导航?

Ios 使用NavigationLink有条件地导航?,ios,swiftui,Ios,Swiftui,我想在单击导航链接时执行web请求,根据响应是成功还是失败,使用成功数据导航到新视图,或停留在当前视图中(显示错误通知) 我试过: isActive属性:虽然这允许我以编程方式激活导航,但它并不阻止由UI触发的导航 Simultaneous手势(tappiration().oneded({…})):这允许我在导航时执行操作,但我也不能阻止导航在这里发生 已禁用修改器:这会使导航链接不交互 或者,我可以实现一个普通按钮,带有一个隐藏的NavigationLink和isActive,如前所述。这

我想在单击
导航链接
时执行web请求,根据响应是成功还是失败,使用成功数据导航到新视图,或停留在当前视图中(显示错误通知)

我试过:

  • isActive
    属性:虽然这允许我以编程方式激活导航,但它并不阻止由UI触发的导航
  • Simultaneous手势(tappiration().oneded({…}))
    :这允许我在导航时执行操作,但我也不能阻止导航在这里发生
  • 已禁用
    修改器:这会使
    导航链接
    不交互
或者,我可以实现一个普通按钮,带有一个隐藏的
NavigationLink
isActive
,如前所述。这看起来不太理想,但可能有效


更好的建议?我知道我也可以在新视图中执行web请求,但这并不好。

如果用户按下按钮/导航链接,我相信他们会立即打开新视图。推迟它可能是更糟糕的用户体验设计。但这不都是基于观点的吗?我同意@pawello2222。如果网络访问可能延迟,您应该立即转换到下一个视图,并显示某种加载动画。如果网络访问无法生成所需的数据,则会发出错误警报,当他们接受该警报时,会弹出到上一个视图。“如果用户按下按钮,他们希望立即打开新视图”:他们为什么会这样做?这只是一个提交按钮。他们希望它提交数据。如果提交成功,则导航到成功屏幕是可选的后续操作。@Ixx提交按钮可能是个例外-您以前没有解释过。在这种情况下,通常的解决方案是Button+HiddenAvigationLink。@pawello2222我不认为这是一个例外。适用于您希望首先执行某种验证/请求的任何操作。SwiftUI的api可能会在某个时候更新,以支持更好的编程导航,因为这显然是缺乏的。