J'utilise le SDK de Facebook pour permettre à un utilisateur de se connecter à mon application via Facebook. Le bouton de connexion fonctionne parfaitement. Il permet à l'utilisateur de se connecter et de se déconnecter et le bon profil est trouvé. Cependant, lorsque l'utilisateur se connecte, j'ai besoin que l'application affiche un contrôleur de vue différent, voici le code ci-dessous:
override func viewDidLoad() { super.viewDidLoad() var loginButton = FBLoginButton(permissions: [ .publicProfile ]) let screenSize:CGRect = UIScreen.main.bounds let screenHeight = screenSize.height // real screen height //let's suppose we want to have 10 points bottom margin let newCenterY = screenHeight - loginButton.frame.height - 20 let newCenter = CGPoint(x: view.center.x, y: newCenterY) loginButton.center = newCenter view.addSubview(loginButton) if(AccessToken.current != nil) { let storyboard = UIStoryboard(name: "Logged In", bundle: nil) let vc = storyboard.instantiateViewController(withIdentifier: "Logged In") self.navigationController?.push(vc, animated: true) // this is the error line } // Extend the code sample "1. Add Facebook Login Button Code" // In your viewDidLoad method: loginButton = FBLoginButton(permissions: [ .publicProfile, .email, .userFriends ]) }
Voici le message d'erreur: La valeur de type 'UINavigationController' n'a pas de membre 'push'
J'utilise la dernière version du SDK. Alors je ne sais pas ce qui ne va pas?
5 Réponses :
Avez-vous essayé de l'utiliser? -
self.present(vc, animated: true, completion: nil)
UPD:
self.navigationController?.pushViewController(vc, animated: true)
Cela a corrigé l'erreur, mais il n'ira pas au contrôleur d'affichage suivant. Il s'intitule «Scène connectée» et le contrôleur de vue s'appelle «Connecté», des idées pour résoudre ce problème?
Essayez ceci.
self.navigationController?.pushViewController(vc, animated: true)
Cela a corrigé l'erreur, mais il n'ira pas au contrôleur d'affichage suivant. Il s'intitule «Scène connectée» et le contrôleur de vue s'appelle «Connecté», des idées pour résoudre ce problème?
imprimez votre objet navigationController. Cela peut être nul.
Au lieu de la méthode push ()
, vous devrez utiliser la méthode pushViewController ()
let storyboard = UIStoryboard(name: "LoggedIn", bundle: nil) let vc = storyboard.instantiateViewController(withIdentifier: "Logged In") self.navigationController?.push(vc, animated: true)
Remarque: - p >
Le nom de fichier de votre storyboard ne peut pas contenir d'espace, veuillez supprimer cet espace. Renommez le nom de votre fichier storyboard en "LoggedIn" ou "Logged_In".
self.navigationController?.pushViewController(vc, animated: true).
Comment vérifier le nom du storyBoard et afficher l'identifiant du contrôleur?
Cela a corrigé l'erreur, mais il n'ira pas au contrôleur d'affichage suivant. Il s'intitule «Scène connectée» et le contrôleur de vue s'appelle «Connecté», des idées pour résoudre ce problème?
Vérifiez que votre fichier storyBoard est le même que "Connecté" et que l'identifiant de viewcontroller est sam comme "" Connecté "
Vous devez utiliser self.navigationController? .pushViewController (VC, animated: true)
au lieu de push
let vc = self.storyboard?.instantiateViewController(withIdentifier: "Logged In") as NextViewController self.navigationController?.pushViewController(VC, animated: true)
Cela a corrigé l'erreur, mais il n'ira pas au contrôleur d'affichage suivant. Il s'intitule «Scène connectée» et le contrôleur de vue s'appelle «Connecté», des idées pour résoudre ce problème?
Vous devez naviguer à partir du storyboard principal pour pouvoir utiliser self.storyboard? .InstantiateViewController (withIdentifier: "Logged In") comme yourViewController // yourViewController - contrôleur de vue suivant après vous être connecté
Au lieu de push ()
écrivez sous la ligne
vc.title = "Logged In"
Pour changer le titre de l'écran, vous devez définir la propriété title du deuxième écran,
self.navigationController?.pushViewController(vc, animated: true)
vous devez utiliser self.navigationController? .pushViewController (vc, animated: true)
self.navigationController? .pushViewController (vc, animé: vrai)
Cela a corrigé l'erreur, mais il n'ira pas au contrôleur d'affichage suivant. Il s'intitule «Scène connectée» et le contrôleur de vue s'appelle «Connecté», des idées pour résoudre ce problème?
Veuillez vérifier le nom de votre storyboard et afficher le nom du contrôleur.