Faire communiquer 2 ViewControllers et 1 UIPopOverController
Alf1996
Membre
Bonjour,
Je déterre ce post dont je me suis abondamment servie pour récupérer une information d'un UIPopoverController (contenant une UITableView) pour l'afficher dans une zone de texte de mon VC principal. Après avoir tourné pas mal, j'ai enfin réussi à faire fonctionner la chose... mais il me reste un problème que je n'arrive pas à résoudre. Lorsque l'utilisateur à cliqué sur un item de ma tableview, je récupère bien l'info pour l'afficher dans mon textfield, mais je n'arrive pas à faire disparaà®tre le popovercontroller. Je pense que je ne fais pas le dismiss au bon endroit...
Quelqu'un aurait-il un une suggestion ?
Merci d'avance.
Je déterre ce post dont je me suis abondamment servie pour récupérer une information d'un UIPopoverController (contenant une UITableView) pour l'afficher dans une zone de texte de mon VC principal. Après avoir tourné pas mal, j'ai enfin réussi à faire fonctionner la chose... mais il me reste un problème que je n'arrive pas à résoudre. Lorsque l'utilisateur à cliqué sur un item de ma tableview, je récupère bien l'info pour l'afficher dans mon textfield, mais je n'arrive pas à faire disparaà®tre le popovercontroller. Je pense que je ne fais pas le dismiss au bon endroit...
Quelqu'un aurait-il un une suggestion ?
Merci d'avance.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour ma part :
- j'envoie le popoverController du controller1 vers le controller2 (avec une property assign)
- dans le controller 2, je crée une méthode delegate type "dismissCurrentPopover:(UIPopoverController*)pop
- méthode que j'implémente dans le controller1 :
- et je l'appelle donc dans le controller 2 au moment opportun, par exemple quand tu cliques sur une ligne de ton tableau :
Je viens d'essayer de l'appliquer, mais j'ai une ou deux questions complémentaires. Puis-je regrouper ton delegate dans mon protocole existant ? Est-ce nécessairement @optionnal ? ou est-ce que tu l'as mis optionnal parce que tu l'utilises dans plusieurs projets différents et que tu ne t'en sers pas systématiquement ?
Concernant l'appel de la méthode déléguée, n'est pas trop tôt de l'appeler dans le didSelectRow de la tableview ?
Voici mon code :
.m du VC1 :
.h du popoverVC
et .m du popoverVC
Désolée si ce sont encore des questions bêtes ! et encore merci
Oui.
Exactement
Non.
D'ailleurs dans ton code, tu ne l'appelles pas. Appelle là après :
[self.delegate didChooseContaminant:[listOfContaminants objectAtIndex:indexPath.row]];
Et sinon, oublie pas de transmettre le popover en question !
Gloup!!!
Ca marche mieux comme çà !
J'ai néanmoins un warning, et même si çà fonctionne, j'ai dû faire un truc qu'il n'aime pas !
J'ai donc le warning suivant :
sur la ligne de code suivante où je déclare le popOver dans mon VC.
Merci d'avance...
Quand tu crées ton popoverController et son controller dans VC1.
Sinon, essayer d'appeler des controller "controller" parce que sinon c'est dur à comprendre !
popContam c'est bien un controller ?
Oui désolée, c'est pas très clair...
Tu l'as déclaré comment ton popoverController dans popContam.h ?
Ce qui est bizarre, c'est que je ne vois le warning que lorsque je visualise le code du view controller, alors que dans la fenêtre "build results", il n'y a rien ; c'est difficile à expliquer, je joins deux copies d'écran.
Merci
Il faut juste mettre une ivar:
Et sa property:
Car il n'y a besoin que de ce delegate:
C'était bien çà ! Et maintenant tout marche nickel
@Ali : c'est vrai, je me suis posé la question... Je n'étais plus vraiment dans le bon topic. Je me suis raccrochée à ce post car j'utilisais ton tutoriel sur les protocol à l'origine, mais j'aurais peut-être dû créer un nouveau sujet dans la rubrique "utilisation des class cocoa"...
Quoi qu'il en soit, mon problème est maintenant résolu. Merci pour tout