Je ne connais pas la programmation iPhone et je suis tombé sur une réponse à une question, mais j'espérais que quelqu'un pourrait me dire pourquoi. J'utilise Facebook Connect dans l'application. Comme mon application nécessite une connexion, j'appelais la boîte de dialogue de connexion par programme plutôt qu'avec un bouton. J'utilise l'exemple de SDK approuvé le code:Pourquoi le dialogue de connexion de Facebook Connect pour iPhone a-t-il besoin d'un délai?
FBLoginDialog* dialog = [[[FBLoginDialog alloc] init] autorelease];
[dialog show];
Je travaille avec un modèle d'application View-Based dans Xcode. Au début, je l'avais placé dans une routine personnalisée que j'appelais fbLogin. Mais quand je mets:
[self fbLogin];
inside viewDidLoad, rien ne se passerait. La routine serait appelée (j'ai tapé une alerte là-bas juste pour être sûr) mais la boîte de dialogue de connexion n'est jamais apparue. Au lieu de cela, si je mets ceci à l'intérieur viewDidLoad:
[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(fbLogin) userInfo:nil repeats:NO];
Ensuite, cela a fonctionné parfaitement. Quelqu'un sait pourquoi viewDidLoad est trop tôt pour lancer la boîte de dialogue FBLogin? Je vais bien avec le léger retard, mais je suis curieux.
Merci.
Donc, il y a la solution
Le SDK Facebook répertorie deux façons d'afficher la boîte de dialogue - la vôtre qui utilise le bouton et la mienne qui est appelée par programme. J'ai utilisé le mien parce que l'application nécessite une connexion Facebook. J'ai créé une routine que j'appelle fbLogin. Il crée la session comme votre code, puis vérifie l'appel de reprise pour voir si elle doit afficher la boîte de dialogue. Le problème est que si je mets [self fbLogin]; Dans la routine viewDidLoad, rien ne se passe. Je crée toujours la session avant d'appeler le dialogue, donc j'essaie de comprendre pourquoi le retard le fait fonctionner. –