You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI从Alert触发跳转报pushViewController错误无法跳转问题

问题产生原因

这个报错是UIKit转场冲突导致的,分两个场景对应不同的触发逻辑:

  • 点击按钮弹出Alert就报错的原因:
    SwiftUI的List会自动识别Cell内部的NavigationLink,给整个Cell附加点击跳转的手势,即使你给NavigationLink加了hidden()修饰符,这个Cell级别的点击手势依然会生效。你点击Cell内的Button时,两个事件会同时触发:
    1. Button的action执行,触发Alert弹出(对应UIKit的present模态转场)
    2. Cell默认的跳转手势触发NavigationLink的push操作尝试
      两个转场同时执行,系统就会抛出你看到的冲突报错。
  • 点击Alert的Navigate按钮无法跳转的原因:
    Alert本身属于模态弹出的视图,点击按钮后会先执行dismiss消失的转场动画,你在Alert按钮的回调里同步修改isShowingNext = true触发push操作时,dismiss转场还没执行完成,push转场和正在进行的dismiss转场冲突,系统会直接拒绝执行push操作,就出现了跳转失效的问题。

内容的提问来源于stack exchange,提问作者Isaak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:21:02