Salut à toutes et à tous,
Voilà depuis quelques temps je m'entraîne au développement en Objective-C pour réaliser des applis iphone à l'avenir.
Je vous explique ce que j'ai fait. Je souhaite réalisé une petite appli de recherche (pour m'entraîner).
Donc au lancement j'arrive sur une Table View avec une liste de cellules, je peux descendre le long de la liste ou effectuer une recherche.
Quand on clique sur une cellule on arrive sur une vue détaillée avec une image(UIImage) et un texte(Label) (pour commencer..)
J'utilises toutes les fonctions liées au table view et aux segue : -(void)prepareForSegue, cellForRowAtIndexPath, numberOfRowsInSection, textDidChange
Jusque là tout fonctionne.
Je voudrai que selon la cellule choisie, le texte et l'image de la vue détail soient différents. Si on clique sur la cellule A, cela affiche un texte A dans le Label et cela importe une image A dans l'UIImage. Et si on sélectionne la cellule B, on ait un Texte B et une image B (Images et textes qui seront dans les ressources de l'applications).
La solution que j'ai trouvé pour le moment est la suivante : j'utilise la méthode prepareForSegue pour le passage à la vue détaillée quand on sélectionne une des cellules en passant le texte de la cellule dans une variable :
méthode prepareForSegue dans la classe MasterViewController :
Et pour la vue détail (classe DetailViewController), j'arrive à changer le texte et les images selon la cellule choisie en testant le nom de la variable passée par le prepareForSegue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([[segue identifier] isEqualToString:@"detailSegue"]) { NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; DetailViewController *dvc = [segue destinationViewController]; dvc.texteAAfficher = [NSString stringWithFormat:@"%@", [tableauTotal objectAtIndex:selectedIndex]]; } }
Je pense que vous comprendrez facilement ce que je fais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self configureView]; //_donneeRecue.text = _texteAAfficher; if([_texteAAfficher isEqualToString:@"Abeille"]) { _donneeRecue.text = @"blablabla sur les Abeilles"; } else if ([_texteAAfficher isEqualToString:@"Guêpes"]) { _donneeRecue.text = @"blablabla sur les Guêpes"; } // ETC ...... }
Tout d'abord cette méthode vous semble t'elle la bonne pour faire ce que je fais ? s'il vous plait
MON PROBLEME :
J'ai décidé d'améliorer l'application comme un vrai dictionnaire par exemple. Ce qui fait plusieurs Labels de textes et plusieurs images par vues. J'utiliserai la même méthode avec les < if, else if ... >
Seulement, j'ai deux questions : dans mon exemple je rempli le texte avec un @"....", mais c'était pour tester. Maintenant puis-je importer des fichiers .txt comme je le fais pour les UIImages (en utilisant des .jpg) dans les ressources de l'application ? s'il vous plait
Et ces fichiers textes (de plusieurs lignes) et toutes ces images seront dans les ressources de l'application. Est-ce le meilleur moyen ? Ou dois-je utiliser une base de donnée ou autre ? s'il vous plait
Merci d'avance à ce qui prendront le temps de me lire (désolé de la longueur du post) et je vous souhaite bonne journée.
Partager