UITableView et custom id

2»

Réponses

  • Alf1996Alf1996 Membre
    juillet 2014 modifié #32

    J'ai pas regardé le reste de ton code, mais le libellé de l'erreur est très clair 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'"

    Vérifie que tu as bien renseigné la méthode "cellForRowAtIndexPath:cellForRowAtIndexPath" avec un "return cell"


  • Non mais prends pas ce que je t'envoies pour solution moi c'est pour que tu regardes et que tu t'inspire comment veux tu que je fasse du code sur ton projet déjà  c'est pas à  moi de le faire de plus si c'est moi qui le fais la prochaine fois tu sauras pas le faire et de plus j'ai pas le projet... Je sais pas comment tu as déclaré ta table view je sais pas si tu utilise les storyboard je sais pas comment tu organise le reste de ton code. Ce que je te donne c'est à  titre d'exemple. Si tu colles vite fais comme ça mon code à  la place du tiens sans regarder tu risque de casser des choses qui fonctionnaient. 


     


    Je penses que dans ton 



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *simpleTableIdentifier = @SimpleTableCell;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    cellListFormView *cellList = [_fullList objectAtIndex:indexPath.row];
    cell.textLabel.text = cellList.cmpTitle;
    return cell;
    }

    Il en manque un bout du genre qui n'est pas le même si tu utilise ou pas les storyboard


    Dans un autre des tes codes tu fais ça :



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *simpleTableIdentifier = @SimpleTableCell;

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    cell.textLabel.text = [_recipes objectAtIndex:indexPath.row];
    NSLog(@%@", cell);
    //cell. = [idtable objectAtIndex:indexPath.row];

    return cell;
    }

    Je te laisse faire le merge et tester pour voir si ça marche.


  • J'ai essayer pas mal de chose et aucun ne passe j'ai l'impression qu'il ne me remplis pas "_fullList" correctement :/


  • Tu as log _fullList? Essayé de mettre un point d'arrêt dans la boucle :



    for (NSArray *object in _recep) {
    cellListFormView *cellList = [[cellListFormView alloc] initWithArray:object];
    [_fullList addObject:cellList];
    }

    pour voir si tu passais bien dedans? Regardé ce qui se passe dans ton initWithDictionary de ton cellListFormView? Pour voir si ce sont les bonnes données qui y sont passé. Tu as deux classe et une trentaine de lignes de codes tu as pas de millions de possibilité. Soit l'objet que tu reçois de ta requête sql est mauvais auquel cas _recept sera mal replis (voir pas du tout), soit ton _fullList ne se remplis pas soit ton  cellListFormView est mal formaté. Mais la avec si peu d'information on peut pas faire grand chose.


  • Alors je regarde dans mon objet les donnée passe bien je passe bien autant de fois qu'il le faut mais quand je fait apres un NSLog sur mon _fullList il me répond (null) :/


  • NasatyaNasatya Membre
    juillet 2014 modifié #37

    Ben voilà  ça c'est une piste tu as pas supprimé la ligne _fullList = [NSMutableArray array]; au moins?


  • KiraxKirax Membre
    juillet 2014 modifié #38

    Effectivement j'avais oublier ta ligne.


     


    TOUT FONCTIONNE NIKEL 


    MERIC POUR TOUT


    Nasatya si un jour tu viens sur paris tu me fait signe je te paye un verre ;) un grand merci alléluia


     


    Je danse sur place mdr


  • Ah c'est beau les histoires qui se finissent bien :)


  • Grave du coup tu me dit si tu va sur paris hien :p

  • J'arrive pas a l'envoyer a une autre vu BORDEL


    HAHAHA il y a de quoi devenir FOU.


    MAIS je suis devenue FOU.


     


    MDR je comprend que dale a la leur "prepareForSegue"


  • Ah les jeunes...


     


    C'est simple dans ton viewController 1tu appels ton prepareForSegue dans ton storyboard tu crées un segue entre tes deux controllers et tu lui donne un id.


     


    Dans ton prepareForSegue tu déclares ton controller numéro 2 et tu lui passes les données que tu veux dans le genre :



    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@monIdSegue]) {
    Controller2 *controller = (Controller2 *)segue.destinationViewController;
    controller.monObjectAPasser = self.monObjectAPasser;
    controller.monObjectAPasser2 = self.monObjectAPasser2;
    }

    Ensuite ton applications se charge de déclarer ton controller de lui donner les paramètres et de l'afficher a l'écran c'est magique presque :)

  • donc controleur 2 c'est mon controleur de destination et controller c'est celui d'ou il part ?


  • Oui exactement ça se voit dans le bout de code que je t'ai envoyé tu as trouvé une solution?


  • KiraxKirax Membre
    juillet 2014 modifié #45

    j'ai qu'un seul objet a passer donc j'ai fait comme ceci 


     



     


    NSLog(@%@", _send.cmpTitle);


        if ([segue.identifier isEqualToString:@open_form]) {


            editForm *controller = (editForm *)segue.destinationViewController;


     


            listFormViewController.send = self.send;


    }



    editForm étant mon nouveau controleur et "listFormViewController" celui dont l'info part mais il me dit sur la derniere ligne 


     



     Property 'send' not found on object of type 'listFormViewController'


     


    2min plus tard :p


     


    Eu en fait j'ai trouver ;)


    Merci encore une fois :p


  • C'est bien si tu t'habitues à  donner des bons noms aux classes/variables...


    Quand quelqu'un va mire cette ligne par exemple "self.send", je t'assure qu'il va rien comprendre. Même toi tu risques de ne pas comprendre ton propre code au bout de certain temps, il faut faire un effort dès le but même si ça te prend du temps à  trouver le bon nom.


     


    Voici un lien de la documentation pour les conventions des noms Cocoa :


     


    https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146-SW1


  • NasatyaNasatya Membre
    juillet 2014 modifié #47

    Haha c'est très bon ta ligne de code tu vois si tu finissait par mettre c'est @#!!## de majuscule à  tes nom de classe ce genre de problème ne t'arriverais pas tu aurais vu que tu essayais de passer une variable à  une classe tu te serais posé des questions (enfin je penses) et tu te serais dis (hey mais c'est pas à  lui que je veux le donner mais bien à  l'instance de mon autre classe) et hop problème résolue :). Fais ce changement ça prend un peu de temps mais tu seras plus raccord avec les codes de tes futur tu comprendra mieux ce que tu fais et même sur les forums les gens pourrons mieux te guider. Parce que franchement moi quand je vois ça : 



    listFormViewController.send = self.send;

    Je comprends ça :



    ListFormViewController *listFormViewController = [[ListFormViewController alloc] init];
    listFormViewController.send = self.send;

    Du coup y a rien de choquant et donc je passerais sans corriger. Par contre si je vois ça :



    ListFormViewController.send = self.send;

    Je vais commencer à  réfléchir un peu.


  • Joanna CarterJoanna Carter Membre, Modérateur

    En plus de ce que Nasatya a dit...


     


    Il faut mieux choisir les noms des @property. send est un verbe (en anglais) et pour une anglaise comme moi, il me paraà®t sensé de n'utiliser que les noms qui décrivent le nature de ce que se tienne dans le @property


     



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