changement de vue avec prepareForSegue sur une tableview

lincoln33lincoln33 Full-Time n00bMembre
Bonjour,



J'ai fait une table view qui affiche des informations d'un JSON.

Ma tableView et mes cellule qui affiche mes catégories s'affichent bien.



Lorsque je click sur la cellule, j'arrive a passer les infos sur une viewController avec le prepareForSegue mais la je souhaite afficher vers une autre tableview. Je ne sais pas si je suis comprhensible.



En gros voici le shema :

TableView (catégorie) ---> TableView (liste des infos suivant la catégorie) ---> View(infos details)



En faite mon simulateur crash quand je click sur la premiere céllule.



Voici mon code du prepareForSegue


<br />
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {<br />
    if ([segue.identifier isEqualToString:@&quot;viewDetailcategorie&quot;]) {<br />
	    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; // Je sais quelle ligne de ma table view est sélectionnée...<br />
	    NSDictionary *dicArticleSelection = [listOfItems objectAtIndex:indexPath.row]; // ... je peux donc récupérer mon article...<br />
	    DetailsCategories *viewDetailController = segue.destinationViewController;<br />
	    viewDetailController.dicArticle = dicArticleSelection; // ... article que je transmets au controller detail.<br />
    }<br />
}<br />




Et a l'interieur du ViewDidLoad de la classe suivante


<br />
- (void)viewDidLoad<br />
{<br />
    [super viewDidLoad];<br />
   <br />
    id IDArticle = [self.dicArticle objectForKey:@&quot;id&quot;];<br />
	 NSURL *urlAdress = [NSURL URLWithString:[NSString stringWithFormat:@&quot;http://localhost:8888/steph/sites.php?id=%@&quot;, IDArticle]];<br />
   <br />
   // NSURL *url = [NSURL URLWithString:urlAdress];<br />
NSURLRequest *request = [NSURLRequest requestWithURL:urlAdress];<br />
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];<br />
[connection start];<br />
}<br />




Mon code d'erreur
2012-12-24 10:49:03.349 testJsonStoryBoard[27944:11303] -[UINavigationController setDicArticle:]: unrecognized selector sent to instance 0x9270600

2012-12-24 10:49:03.350 testJsonStoryBoard[27944:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setDicArticle:]: unrecognized selector sent to instance 0x9270600'

*** First throw call stack:

(0x1c96012 0x10d3e7e 0x1d214bd 0x1c85bbc 0x1c8594e 0x460c 0x462ac7 0x462b54 0xca899 0xcab3d 0xad1e83 0x1c55376 0x1c54e06 0x1c3ca82 0x1c3bf44 0x1c3be1b 0x1bf07e3 0x1bf0668 0x1b65c 0x280d 0x2735)

libc++abi.dylib: terminate called throwing an exception




Mon dicArticle est bien déclaré dans le .h



Je ne vois pas d'où peut venir mon erreur.



Merci

Réponses

  • L'erreur est explicite : tu appelles la méthode setDidActicle d'un UINavigationController. Or cette méthode n'existe pas.

    À mon avis ton problème vient de la ligne :

    DetailsCategories *viewDetailController = segue.destinationViewController;



    Laquelle doit te renvoyer un navigation controller plutôt qu'un UIViewController. Faut que tu regarde au niveau de tes connexions de tes segues.
  • lincoln33lincoln33 Full-Time n00b Membre
    Ok merci
  • lincoln33lincoln33 Full-Time n00b Membre
    j'ai essayé ca mais ca ne marche toujours pas


    <br />
    UINavigationController *navigationController = segue.destinationViewController;<br />
    DetailsCategories *leDetail =[[navigationController viewControllers]objectAtIndex:0];<br />
    leDetail.dicArticle = [listOfItems objectAtIndex:indexPath.row];<br />
    
  • Tentes ça :





    <br />
    UINavigationController *aNavController = (UINavigationController *)segue.destinationViewController;<br />
    DetailsCategories *detailsCategory = (DetailsCategories *)aNavController.topViewController;<br />
    
  • lincoln33lincoln33 Full-Time n00b Membre
    ca me fait toujours
    2012-12-24 12:06:51.093 testJsonStoryBoard[39808:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

    *** First throw call stack:

    (0x1c96012 0x10d3e7e 0x1155b0 0x115098 0x470da3 0x462ad9 0x462b54 0xca899 0xcab3d 0xad1e83 0x1c55376 0x1c54e06 0x1c3ca82 0x1c3bf44 0x1c3be1b 0x1bf07e3 0x1bf0668 0x1b65c 0x284d 0x2775)

    libc++abi.dylib: terminate called throwing an exception




    et deux warning car deux ne sont pas utilisée
  • Il y a sans doute un problème entre ton storyboard et ce que tu en fais dans ton code.
  • lincoln33lincoln33 Full-Time n00b Membre
    Ah... pourtant les vues sont biens relié avec un identifiant dans segue storyBoard...



    est-ce que ca ne viendrai pas du viewDidLoad ?


    <br />
        id IDArticle = [self.dicArticle objectForKey:@&quot;id&quot;];<br />
    	 NSURL *urlAdress = [NSURL URLWithString:[NSString stringWithFormat:@&quot;http://localhost:8888/steph/sites.php?id=%@&quot;, IDArticle]];<br />
       <br />
       // NSURL *url = [NSURL URLWithString:urlAdress];<br />
    NSURLRequest *request = [NSURLRequest requestWithURL:urlAdress];<br />
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];<br />
    [connection start];<br />
    
  • 'lincoln33' a écrit:


    Ah... pourtant les vues sont biens relié avec un identifiant dans segue storyBoard...



    est-ce que ca ne viendrai pas du viewDidLoad ?






    Non, car ce n'est pas ce que dit l'erreur.

    Je ne comprends pas ton storyboard : tu as une scene intitulé "Les catégories" embarquée dans un navigation controller suivi d'une autre scene ("Root View Controller") avec un autre navigation controller.

    Ca fait beaucoup de navigation controller je trouve.
  • lincoln33lincoln33 Full-Time n00b Membre
    Ah peut etre que j'ai mal fichu le storyBoard...

    en faite l'idée est de faire une table view qui affiche des categories puis suivant la categories on affiche une autre table view avec les infos liées et si je click sur la cell apres ca affiche le detail.



    COmment tu aurais fait Toi pour cela ?
  • 'lincoln33' a écrit:


    COmment tu aurais fait Toi pour cela ?




    Pas sûr que ça soit la bonne question. La réponse à  cette question vient de l'expérience que tu veux donner aux utilisateurs. Aux objets que tu manipules dans ton application, leur importance et leur hiérarchie.

    La réponse à  ta question peut aussi venir des guidelines Apple concernant la conception d'une application iOS.



    Ici, tu semble avoir une navigation de type Master/Detail. À priori tu n'as donc besoin que d'un seul navigation controller qui va te permettre de naviguer (aller et retour) depuis ta liste de catégories jusqu'à  leur détail.



    Enfin, j'ajouterai que Storyboard n'est pas l'outil idéal pour dessiner directement ton application. Il faut un travail préalable (par exemple en faisant des sketch sur papier).
  • lincoln33lincoln33 Full-Time n00b Membre
    ok je vais essayer de chercher.



    merci
  • hamidphonehamidphone Membre
    décembre 2012 modifié #13
    bonsoir

    erreur est la je crois
    <br />
    			NSDictionary *dicArticleSelection = [listOfItems objectAtIndex:indexPath.row]; // ... je peux donc récupérer mon article...<br />
    


    correction
    <br />
    NSDictionary *dicArticleSelection = listOfItems [[path row]];<br />
    


    svp fait des nslog pour tes dictionnaires comme sa on peut voir sa donne quoi niveau json peut etre un array pour dictionnaite que ta oublier.

    avec ma correction ton segue est surement correcte.

    nslog de dicArticleSelection pour voir si il est correcte ou pas.
  • 'hamidphone' a écrit:


    bonsoir

    erreur est la je crois
    <br />
    			NSDictionary *dicArticleSelection = [listOfItems objectAtIndex:indexPath.row]; // ... je peux donc récupérer mon article...<br />
    


    correction
    <br />
    NSDictionary *dicArticleSelection = listOfItems [[path row]];<br />
    


    svp fait des nslog pour tes dictionnaire comme sa on peut voir sa donne quoi niveau json peut etre un array pou dictionnaite que ta oublier

    avec ma correction ton segue est surement correcte

    si erreur est la méme nslog de dicArticleSelection pour voir si il est correcte ou pas




    Soyons sérieux 5 minutes.
  • 'Kubernan' a écrit:


    Soyons sérieux 5 minutes.




    image/huh.gif' class='bbc_emoticon' alt='???' />??
Connectez-vous ou Inscrivez-vous pour répondre.