[Résolu] Passer des données entre des vues : prepareforSegue
Bonjour,
Voilà je pense que mon problème doit être mondialement connu mais je n'ai toujours pas trouvé de solution viable.
Imaginez 2 vues dans une application : les deux ayant des UITableView.
1) La première vue (Home/Accueil) sert à afficher les flux RSS favori (mais juste le lien genre www.rss.cocoa.fr) d'un utilisateur.
2) La seconde vue permet de chercher et choisir d'ajouter d'autres flux en favori.
En résumé : donc la seconde vue a une NSArray *favoriNouveaux;
J'aimerai passer cette Array ,quand je clique sur un bouton, dans la liste des favorisAncien (dans Home) et la mettre à jour
J'en viens donc à prepareforSegue :
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@addFavorites]) {
ViewController *destViewController = segue.destinationViewController;
[destViewController.newFavorite addObjectsFromArray:favorites];
}
}
Dans HomeViewController.h et je n'arrive pas à @synthetisize cette variable
@property (strong,nonatomic) NSMutableArray *newFavorite;
Actuellement j'ai, à partir du storyboard, donné un nom au segue du bouton retour
Mais voilà je bloque. Le code ci-dessus ne marche pas bien entendu et ne compile même pas
Ma Question :
Y a t-il un moyen plus optimisé, plus propre pour faire passer un objet (tel qu'une NSMutableArray, NSArray) d'une vue à une autre (api iOS 7+) ?
Et si c'est l'unique solution comment dois-je procéder ?
PS : Si vous voulez des précisions dans le code je les mettrais
Réponses
ça ne compile pas ?
Pourquoi ? Quel message d'erreur ?
Sinon, c'est le moyen de passer des infos d'un VC à un autre, avec des segues. Avant, sans le SB, c'était un peu différent, mais bon...
Errata au dessus c'est pas une Array mais MutableArray
Alors le message d'erreur est :
Et j'ai mis à jour mon post ( désolé ) pour détailler le problème aussi.
Pourquoi tu n'utilises pas plutôt un NSArray au lieu d'un NSMutableArray ? Dans ton cas actuel il ne peut pas contenir les données que tu lui passe si il n'est pas initialisé auparavant.
Sinon j'ai pas bien compris ce que tu essayes de faire. Ton but est-il de passer des valeurs d'une vue parent à une vue fils ou bien passer des données à une vue parent à partir d'une vue fils ? Si tu veux transférer des informations à l'aide d'un bouton retour j'imagine que c'est le deuxième cas qui t'intéresse. Dans ce cas précis l'idéal ou du moins le plus conseillé c'est d'utiliser les delegates.
Il n'est pas nécessaire de synthétiser le propriétés, sauf si tu veux avoir les effets secondaires.
Côté passage d'un NSMutableArray, Il ne faut qu'ajouter une propriété de type NSMutableArray sur le destination ou mieux, si tu ne veux pas modifier le contenu, NSArray
C'est à dire les effets secondaires ?
Bah j'ai ça actuellement
Mais toujours la même erreur
Voilà une image : pareille quand j'essaie de la synthétiser ...
Bon au final j'ai compris l'erreur : en gros ma variable commence par "new" et ce n'est pas acceptable par le compilateur d'après certains forum. http://stackoverflow.com/questions/6327448/semantic-issue-propertys-synthesized-getter-follows-cocoa-naming-convention-fo
Unacceptable Object Names
newButton
newLabel
newTitle
Acceptable Object Names
_newButton
mewLabel
neueTitle
Je me penche sur le code et je reviens vers vous.
PS : Ah oui quels sont les effets secondaires ? du @synthesize
_____________________
MAJ :
Bon je me suis penché sur le code mais quand je regarde la taille de ma theNewFavorite (MutableArray) et bah elle est à 0. Sachant que j'ai regardé sa taille à partir de viewDidLoad et viewWillAppear
Pourtant je lui ai demandé de la remplir avec les objets d'une autre Array qui elle est bien remplie
Je pense avoir résolu mon problème il me manquait l'allocation mémoire
Je suis aveugle je devrais aller me reposer .... : Merci @Magiic et Aligator