2012-11-18 1 views
0

Je sais que c'est une question pour débutants mais je ne pouvais pas trouver une solution. J'ai une application avec un storyboard. Il s'agit d'une application à affichage à onglets, et chaque onglet mène à un contrôleur de vue nav et à un contrôleur de vue racine. dans le contrôleur de navigation nav j'ai un bouton de connexion. En appuyant dessus, vous envoyez un message au délégué de l'application pour gérer l'ouverture d'une session avec Facebook. je veux après la session avec facebook ouvert, pour définir le titre du bouton pour se déconnecter parce que c'est ce que ça va faire si je l'appuie à nouveau. tout cela a été visuellement programmé et non codé en dur tant que le code manque. maintenant je sais qu'il ya seulement une instance du délégué de l'application donc c'est assez facile d'y accéder à partir de la vue, mais comment puis-je obtenir du délégué de l'application à la session active de la vue? j'ai essayé de le mettre dans la méthode viewDidLoad mais apparemment le rappel de l'API Facebook ne recharge pas la vue (aussi bien ne devrait pas, ne pas travailler le système pour rien encore)influencer une vue de l'AppDelegate

des idées comment obtenir l'application déléguer pour envoyer un message à la session activee de la vue?

+0

Pouvez-vous changer le titre du bouton juste avant d'envoyer le message au délégué de l'application? (C'est-à-dire, quand le bouton est sélectionné, vous savez qu'il va changer sa fonction pour le prochain tap.) –

+0

non, parce que je ne sais pas avant la connexion dans le délégué de l'application si son succès ou non. J'ai une propriété dans l'appdelegate qui représente un drapeau. vrai = j'ai session, le bouton devrait être déconnexion ou faux je n'ai pas et je dois me connecter. –

Répondre

1

Voici quelques façons que vous pourriez faire: (la bibliothèque Facebook pourrait déjà poster des notifications)

  1. Vous pouvez utiliser obtenir votre délégué application pour poster une notification lorsque l'utilisateur est connecté/out , et vos contrôleurs de vue peuvent s'inscrire pour cette notification afin qu'ils puissent changer leur état lorsque la session Facebook change d'état. Vous devrez également faire quelque chose sur votre méthode viewDidLoad de sorte que si l'utilisateur a une session d'une connexion précédente, le contrôleur se met dans l'état initial correct. Consultez https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html#//apple_ref/doc/uid/10000043i pour plus d'informations sur la programmation des notifications.
  2. Vous pouvez implémenter le code dans viewWillAppear:animated sur votre contrôleur de vue de sorte que lorsque la vue est affichée après que l'utilisateur s'est connecté, le contrôleur interroge le délégué de l'application pour déterminer votre état de session. Je suppose que c'est ce que vous essayez de faire en mettant le code dans viewDidLoad, mais la vue est déjà chargée donc ce code ne sera pas appelé après une connexion. viewWillAppear:animated est appelée juste avant l'affichage de la vue.
+0

thx, les notifications ont fait l'affaire. –

Questions connexes