2017-10-18 14 views
0

J'essaie actuellement d'obtenir une instruction conditionnelle pour utiliser performSegue(withIdentifier:sender:). Actuellement, je ne reçois aucune erreur mais le segue n'est pas effectué. Le projet utilise le SDK Facebooks si loginButton() est appelé lorsque l'utilisateur se connecte à (fonctionne cette partie, les impressions de la console « utilisateur est connecté » qui confirme que SDK si fonctionne correctement)Segue n'étant pas exécuté dans une instruction conditionnelle

L'identifiant est correctement orthographié dans le story-board

class LoginViewController: UIViewController, FBSDKLoginButtonDelegate { 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     let loginButton = FBSDKLoginButton() 
     loginButton.frame = CGRect(x: 15, y: view.frame.maxY - 50, width: view.frame.width - 32, height: 32) 
     view.addSubview(loginButton) 

     loginButton.delegate = self 
    } 

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) 
    { 
     if error != nil 
     { 
      print(error) 
      return 
     } 
     else 
     { 
      print("user is logged in") 
     } 
     performSegue(withIdentifier: "postToView", sender: self) 

    } 

    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) 
    { 
     print("logged out") 
    } 

} 

C'est ce que le story-board ressemble Storyboard

Comment puis-je obtenir pour effectuer la Segue une fois que la condition est vraie?

+0

Ajoutez une instruction d'impression - première ligne - dans loginButton(). Vous ne montrez pas comment loginButton() est appelé. Je soupçonne que c'est le problème. –

+0

@PriceRingo oublié de mentionner, c'est en utilisant le Facebook SDK donc il a appelé loginButton une fois que l'utilisateur est connecté – hpcsolo

+0

Pouvez-vous imprimer votre story-board? –

Répondre

-1

Remplacez l'appel à segue dans loginButton() par ceci.

DispatchQueue.main.async { 
    [unowned self] in 
    self.performSegueWithIdentifier("postToView", sender: self) 
} 
+0

Il n'y a pas de 'dispatch_async' dans Swift moderne. – matt

+0

Cela ne semble pas fonctionner, il semble jeter des erreurs – hpcsolo

+0

Mettez une instruction d'impression avant et après l'appel à segue afin que nous sachions si elle l'a fait si loin. –