Creer un bouton "Ajouter au panier" dans un UITableViewController
Bonjour a tous,
Je développe une application avec un backend sous Parse (parse.com). L'application se compose d'un UITableViewController qui affiche des produits (nom, description, photo) et d'un ViewController qui est un panier. A chaque ligne, j'ai un bouton "Ajouter" sur lequel l'utilisateur clique pour ajouter un produit a son panier.
Je suis en difficulté avec le bouton "Ajouter". Je n'arrive pas a l'implementer, je bloque dessus...
J'ai défini un NSObject MyItem qui représente un produit (nom, description, photo).
J'ai un NSObject CheckoutCart qui regroupe les fonctions de mon panier. Il contient entre autre la fonction addObject appelée addArticle qui me permet d'ajouter des objets de type MyItem a un tableau qui regroupe tous les articles. Puis j'affiche le tableau dans mon ViewController Panier.
Voici mon code :
- (UITableViewCell *)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)myObject
{
MainTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@MyCustomCell];
PFFile *thumbnail = [myObject objectForKey:@imageFile];
cell.imageProduct.file = thumbnail;
[cell.imageProduct loadInBackground];
cell.nameLabel.text = [[myObject objectForKey:@nom] uppercaseString];
cell.descriptionLabel.text = [myObject objectForKey: @description];
NSLog(@Objet : %@", myObject);
return cell;
}
- (IBAction)buttonClick:(id)sender
{
CheckoutCart* myCheckoutCart = [CheckoutCart sharedInstance];
[myCheckoutCart addArticle:oneArticle];
}
En ajoutant le code ci-dessous dans mon IBAction, j'affiche bien "Velo de ville" et "Bleu avec un guidon vert" dans mon panier a chaque fois que je clique sur un des boutons "Ajouter". Donc la mécanique est bonne du cote du panier.
MyItem *oneArticle = [[MyItem alloc] init];
oneArticle.itemName = @Velo de ville;
oneArticle.itemDescription = @Bleu avec un guidon vert;
Mais c'est la ou je bloque... Comment faire pour que oneArticle représente chaque objet myObject ?
Si vous pouviez m'aiguiller, ca serait sympa ! Merci !
Réponses
Bon, a priori, j'ai trouve un semblant de solution avec les tags... Mon message au dessus n'était pas très clair...
Salut,
Comment tu récupères la liste des objets que tu affiches dans ta cellules ? normalement tu vas avoir un array ou autre d'objet que tu affiches. Ensuite à chaque click sur ta cellule :
Une idée: ta cellule contiendrait une propriété "article" pour lui passer l'article qui correspond au numéro de ligne. La cellule serait la cible de l'action du bouton. Dans la méthode d'action, tu peux alors appeler:
Alors avec un peu de retard, voici la solution que j'ai mise en place. J'utilise Parse.com pour mon backend, d'où quelques motifs dans le code :
Dans TableViewController.m j'ai ajouté un tag à chacun de mes boutons :
Dans TableViewController.m, j'ai crée une méthode pour appeler la fonction addToCart située dans mon objet CheckoutCart :
Dans mon panier que j'appelle CheckoutCartTableViewController, j'affiche les données contenues dans mon tableau monArray.
Ainsi quand on clique sur un bouton Ajouter au Panier, cela ajoute l'article au tableau monArray, et j'affiche ce tableau dans mon panier.