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

使用Storyboard时按钮点击触发两次界面转场问题求助

按钮点击触发两次Storyboard界面转场的原因分析

以下是可能导致该问题的几种常见原因及排查方向:

  • IBAction重复绑定:按钮在Storyboard中被重复绑定了showLoginViewController方法,或是同时通过代码和Storyboard拖拽两种方式绑定了该方法。点击按钮时会触发两次方法调用,进而执行两次performSegue。可通过查看按钮的「Connections Inspector」面板,检查是否存在重复的Action条目。

  • Segue重复触发:除了代码中手动调用performSegue,还在Storyboard中给按钮直接拖拽创建了标识符为showLoginViewController的Segue。这种情况下,点击按钮会同时触发Storyboard自带的Segue转场,以及代码中调用的Segue转场,导致两次界面切换。

  • 主线程调度逻辑问题:代码中使用tmainQueue调度performSegue执行,如果该调度逻辑存在重复入队的情况(比如tmainQueue的封装实现有问题,或是之前有未完成的调度任务),会导致performSegue被多次调用。

  • 按钮事件重复响应:按钮的交互状态异常,或是存在手势识别器冲突。例如按钮上同时添加了Tap手势识别器,且手势和按钮自身的点击事件都处于激活状态,一次点击会被识别为两次触发源。

排查建议

  1. 先注释掉代码中的performSegue(withIdentifier: "showLoginViewController", sender: nil),点击按钮观察是否仍会触发转场。如果会,说明Storyboard中存在直接绑定在按钮上的Segue,需删除该Segue。
  2. 在showLoginViewController方法内添加打印日志(如print("触发转场")),确认该方法是否被调用两次,以此定位问题是方法重复执行还是performSegue被多次调用。
  3. 检查按钮的Connections面板,确保showLoginViewController方法仅绑定一次。

内容的提问来源于stack exchange,提问作者Kerem DEMİR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:32:39