Facebook登录成功后调用PerformSegue报错:无对应segue标识符
问题分析与解决方案
问题根源
你遇到的错误核心原因是:
UserLoginManager虽然继承了UIViewController,但你在ViewController中创建的fbmanager = UserLoginManager()是一个未关联到storyboard、未加入视图层级的独立实例,它根本没有配置名为gonext的segue。- 调用
loginManager.logIn时传入了viewController: nil,没有指定当前显示的视图控制器,同时错误地让非视图层级的UserLoginManager执行segue跳转。
修复方案
1. 重构UserLoginManager,剥离视图控制器职责
登录管理类不需要继承UIViewController,它的职责应该是处理登录逻辑,通过闭包回调通知登录结果,由当前显示的视图控制器处理跳转。
修改后的UserLoginManager代码:
import Foundation import FacebookLogin class UserLoginManager { private let loginManager = LoginManager() func facebookLogin(from viewController: UIViewController, completion: @escaping (Bool) -> Void) { loginManager.logIn(permissions: [.publicProfile, .email], viewController: viewController) { loginResult in switch loginResult { case .failed(let error): print(error) completion(false) case .cancelled: print("User cancelled login.") completion(false) case .success(let grantedPermissions, let declinedPermissions, let accessToken): print("Logged in! \(grantedPermissions) \(declinedPermissions) \(accessToken)") GraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name"]).start(completionHandler: { (connection, result, error) -> Void in if error == nil { let fbDetails = result as! NSDictionary print(fbDetails) } }) completion(true) } } } }
2. 修改ViewController,由当前VC处理跳转
让ViewController接收登录成功的回调,在主线程执行segue跳转(因为Facebook登录回调可能在后台线程)。
修改后的ViewController代码:
import UIKit import FacebookLogin class ViewController: UIViewController { var fbmanager = UserLoginManager() override func viewDidLoad() { super.viewDidLoad() } @IBAction func facebook(_ sender: UIButton) { fbmanager.facebookLogin(from: self) { [weak self] success in guard let self = self else { return } if success { DispatchQueue.main.async { self.performSegue(withIdentifier: "gonext", sender: self) } } } } }
3. 验证Storyboard配置
最后确认Storyboard的segue设置:
- 确保
ViewController(登录按钮所在的VC)和目标跳转VC之间已创建segue - 检查segue的
Identifier确实为gonext(注意大小写和拼写) - 确认segue的触发方式是"Show"或你需要的跳转类型
内容的提问来源于stack exchange,提问作者Mykyta Yarovoi
相关产品推荐
相关产品推荐

