Passer de la data (multiple pointers) via segue

JopaoneJopaone Membre
janvier 2017 modifié dans API UIKit #1
Bonjour,

Je souhaite passer de la data d'une cellule (UITableView) vers un viewcontroller par l'intermédiaire d'un segue.

Je procède comme ci-dessous ça fonctionne très bien pour faire passer la donnée "fromUser" :

if ([segue.identifier isEqualToString:@showActivity]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

PFObject *object = [self.objects objectAtIndex:indexPath.row];
PFUser *user = object[@fromUser];
// PFUser *toObject = object[@toObject];
detailActivityViewController *svc = (detailActivityViewController *)[segue destinationViewController];
svc.item = user;

Mon problème :

Est-il possible de faire passer en même temps la donnée "toObject" ? Je peux remplacer l'un par l'autre et faire passer ce dernier sans problème.

Mais je ne vois pas comment faire passer les deux simultanément... Je pense qu'il faudrait certainement l'écrire d'une autre manière ... Quelqu'un aurait-il une idée ? Merci par avance pour votre aide.
Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur

    Dans ton exemple, tu passes le PFUser au DetailActivityViewController en fixant sa propriété .item.


    Il y a plusieurs possibilités, par exemple:


     


    - que DetailActivityViewController ait des propriétés .fromUser et .toObject


    - que DetailActivityViewController ait une propriété .object dans laquelle tu passes directement le PFObject.


  • JopaoneJopaone Membre
    janvier 2017 modifié #3
    Je me rends compte que je n'ai ouvert mon topic au bon endroit (macOs au lieu de iOS...)
    Modérateur: j'ai déplacé le sujet dans la bonne section (quoique ça ne change pas grand chose ici).


    DetailActivityViewController comporte ces propriétés de la façon suivante:


    @class PFObject;
    @class PFUser;

    @interface detailActivityViewController : ...

    @property (nonatomic, strong) PFObject *item;
    @property (nonatomic, strong) PFUser *user;

    Je peux faire passer l'un ou l'autre (fromUser ou toObject) mais pas les deux simultanément , le problème viendrait plutôt de la syntaxe de mon segue qui n'en fait passer qu'un seul, comment l'écrire autrement ?
  • Joanna CarterJoanna Carter Membre, Modérateur
    janvier 2017 modifié #4
    Porquoi pas passer le PFObject ?


    Et, s'il te plaà®t, utiliser les balises code. Cette fois, je l'ai déjà  fait pour toi.
  • CéroceCéroce Membre, Modérateur

    Je peux faire passer l'un ou l'autre (fromUser ou toObject) mais pas les deux simultanément , le problème viendrait plutôt de la syntaxe de mon segue qui n'en fait passer qu'un seul, comment l'écrire autrement ?

    Tout simplement:

    if ([segue.identifier isEqualToString:@showActivity]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    DetailActivityViewController *svc = (DetailActivityViewController *)[segue destinationViewController];
    PFObject *object = [self.objects objectAtIndex:indexPath.row];
    svc.item = object[@toObject];
    svc.user = object[@fromUser];
    Mais comme Joanna, je ne vois pas bien l'intérêt de passer le PFUser si tu passes le PFObject (qui contient le PFUser).
  • JopaoneJopaone Membre
    janvier 2017 modifié #6
    Passer le PFObject a exactement le même effet. Le "toObject" passe mais pas moyen de retrouver le "fromUser" sur le second VC

    if ([segue.identifier isEqualToString:@showActivity]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    PFObject *object = [self.objects objectAtIndex:indexPath.row];
    PFObject *pfobject = object[@toObject];
    // PFUser *toObject = object[@fromUser];
    detailActivityViewController *svc = (detailActivityViewController *)[segue destinationViewController];
    svc.item = pfobject;

    Je ne trouve pas de moyen d'associer les deux :/
  • Joanna CarterJoanna Carter Membre, Modérateur
    janvier 2017 modifié #7

    Mais, c'est facile :



    @class PFObject;
    @class PFUser;

    @interface detailActivityViewController : ...

    @property (nonatomic, strong) PFObject *object;


    if ([segue.identifier isEqualToString:@showActivity])
    {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    PFObject *object = [self.objects objectAtIndex:indexPath.row];

    detailActivityViewController *svc = (detailActivityViewController *)[segue destinationViewController];

    svc.object = object;

  • OK merci beaucoup Céroce et Joanna ça fonctionne !


Connectez-vous ou Inscrivez-vous pour répondre.