我的Swift segue根本不起作用,也没有抛出任何错误。断点向我显示该应用程序已落在该行上,但没有任何反应:
self.performSegueWithIdentifier("SignupSegue", sender: self)
该代码块是Facebook的登录表单:
if let accessToken: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken() {
PFFacebookUtils.logInInBackgroundWithAccessToken(result.token, block: {
(user: PFUser ? , error : NSError ? ) - > Void in
if user!.isNew {
self.performSegueWithIdentifier("SignupSegue", sender: self)
} else {
self.navigateToInGame(true)
}
})
}
这是它应该调用的segue函数,但甚至没有实现:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if (segue.identifier == "SignupSegue") {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SignUpViewController")
self.showViewController(vc, sender: self)
}
}
有任何想法吗?
通常,任何UI更新都必须在主线程中。我认为PFFacebookUtils.logInInBackgroundWithAccessToken
在上述情况下,该块仍处于后台状态。也许触发showViewController
in dispatch_async(dispatch_get_main_queue(), {})
,看看是否有任何区别。
dispatch_async(dispatch_get_main_queue(), {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SignUpViewController")
self.showViewController(vc, sender: self)
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句