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

在ViewDidLoad/ViewDidAppear中调用Segue失败,已验证邮件仍未触发跳转

解决Segue未执行的问题

首先,既然控制台能输出"started",说明你的用户邮箱验证逻辑是正常触发的,问题集中在performSegue的执行环节上,我给你几个排查和修复的方向:

  • 检查Segue标识符的准确性
    打开你的Storyboard,找到这个Segue,确认它的Identifier字段和你代码里的"gotoMoin"完全一致——包括大小写、拼写,甚至不能有多余的空格,这个细节很容易踩坑。

  • 确保在主线程执行UI操作
    Firebase的addStateDidChangeListener回调有时候可能不在主线程触发,而所有UI相关操作(包括Segue跳转)必须在主线程执行。你可以把performSegue包裹在主线程调度里试试:

    Auth.auth().addStateDidChangeListener { auth, user in
        if (user?.isEmailVerified)! {
            print("started")
            DispatchQueue.main.async {
                self.performSegue(withIdentifier: "gotoMoin", sender: nil)
            }
        }
    }
    
  • 确认当前ViewController的上下文状态
    检查你的当前VC是否处于可以触发Segue的状态:

    • 它是不是导航控制器(UINavigationController)的栈顶控制器?如果不是,Segue可能无法正常触发。
    • 有没有其他模态弹窗(presented VC)覆盖在当前VC上?这种情况下Segue也会失效。
  • 尝试替换Segue触发方式(备选方案)
    如果上面的方法都没用,你可以直接通过Storyboard实例化目标VC来跳转,绕开Segue的问题:

    DispatchQueue.main.async {
        let targetVC = self.storyboard?.instantiateViewController(withIdentifier: "MoinViewControllerID") as! MoinViewController
        self.navigationController?.pushViewController(targetVC, animated: true)
        // 如果是模态跳转用这个:
        // self.present(targetVC, animated: true)
    }
    

    注意这里需要给目标VC在Storyboard里设置对应的Storyboard ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:44