[debutant] aide pour détail de tableView

2»

Réponses

  • et gros gros merci,


     


    des que tu l'auras pris cependant, j'essayerai de l'effacer.


  • çà  y est j'ai chargé, je regarde çà ...


    Au passage, il est beau ton toutou (j'adore les chiens, mais il ne faut pas le dire, c'est un secret !!!)


  • KubernanKubernan Membre
    juin 2014 modifié #34

    J'ai regardé un peu ton projet.


     


    1- Y-a-t-il une raison pour que ta première scene soit une sous-classe de UIViewController au lieu de UITableViewController ?


    2- Dans ViewController.h tu as la propriété @property (strong, nonatomic) DetailViewController *detailViewController; Elle n'a rien à  y faire là , tu peux l'enlever. Tu as seulement besoin d'une instance de DetailViewController au moment de l'appel au prepareForSegue:


    3- Quitte à  utiliser des property, tu peux déclarer ton myArray comme ça :



    @interface ViewController ()
    @property (strong, nonatomic) NSArray *myArray;
    @end

    Il faut alors utiliser self.myArray dans ton code.


     


    4- Dans ton prepareForSegue: la ligne :



    detailViewController.variableDetailItem = [NSString stringWithFormat:@%@",[self.myArray objectAtIndex:indexPath.row]];

    En fait un peu trop. Ton array contient déjà  un string. Il suffit donc de faire : 



    detailViewController.variableDetailItem = [self.myArray objectAtIndex:indexPath.row];

    5- Le TextLabel de ta vue detail n'est pas connecté à  ton controller.


    6- Tu as un lien tout pourri qui traine dans ton storyboard et qui fait planter. Cela concerne ton label qui est lié à  un truc qui s'appelle Detail. Il faut supprimer ce lien.


     


     


    Edit: Une version qui fonctionne de ton projet.

  • Alf1996Alf1996 Membre
    juin 2014 modifié #35

    Grillé par Kub !


    Il suffit en effet de connecter ton outlet sur le UILabel... après avoir supprimé le lien vers "Detail" qui n'existe plus.


     


    Edit : concernant le point 4 de Kub, à  l'origine je t'avais suggéré d'écrire :


            detailViewController.variableDetailItem = [NSString stringWithFormat:@Object sélectionné : %@",[myArray objectAtIndex:indexPath.row]];

     


    ...histoire d'en profiter pour te montrer comment créer une concaténation de chaine... Mais si tu reprends l'objet tel quel, la solution de Kub est plus simple...


  • gros merci a tous les deux!


    ok, je cherche ce lien pourri!


     


     


    j'ai supprimé le fichier avant de partir une guerre avec les chats ;-)




  •  


    Au passage, il est beau ton toutou (j'adore les chiens, mais il ne faut pas le dire, c'est un secret !!!)




    Les chats ne te suffisent déjà  plus... misère...

  • ho que ça fait plaisir de voir une version de mon appli qui fonctionne. :-) :-) :-)  :D


     


     




    J'ai regardé un peu ton projet.


     


    1- Y-a-t-il une raison pour que ta première scene soit une sous-classe de UIViewController au lieu de UITableViewController ?


     




     


    Bah, je voyait pas d'autre façon d'avoir un tableView et non un tableViewControler, ce qui me permet plus de configuration graphique, ne luis attribuer qu'une section de l'ecran, mettre une image de fond etc.


     


    Pour tous le reste, j'essaie de reproduire par moi meme pour bien comprendre :-)


    gros merci.


  • Pour créer le lien entre le UILabel, l'idéal est de tirer le lien physiquement avec la vue qui te permet d'avoir à  la fois le storyboard et le .h. Pour ceci, cliquer sur le bouton entouré en rouge dans la capture d'écran suivante.


    Puis tu cliques sur le petit rond à  gauche de l'IBOutlet, et tu déplaces la souris vers l'objet en question du storyboard (voir la flèche rouge).


     


    NB : il existe d'autres méthodes, mais perso, j'aime bien celle-ci... elle est assez parlante.


     


    Au passage, il reste encore un IBOutlet que tu peux supprimer (variableDetailItem).


     


  • KubernanKubernan Membre
    juin 2014 modifié #40

    Personnellement j'utilise une autre méthode, celle qui permet de créer directement la propriété associée à  l'outlet dans le .m (et non le fichier .h étant donné que l'outlet n'a pas à  être exposé ailleurs).


     


    1ère étape : un Ctrl drag depuis l'élément graphique du storyboard vers le .m


  • C'est aussi une méthode que j'aime bien aussi !


  • Haaaaa!,

    J'avais hâte de quitter le bureau pour venir faire joujou dans Xcode ;-)


    Donc, même si Kubernan m'avais fourni une version qui marche, j'ai refait le tout dans ma version ensuite.

    Ouf!

    Alors la, il y a un truc qui fallait vraiment la peine: depuis un bout mon premi blême n'était plus le prepareForSegue mais des liens périmé car j'avais seulement changé les noms dans le code sans les supprimer et refaire, et c'est un comportement que j'aurais reproduit dans tous mes projets avec des plantages a n'en plus finir !

    Donc bon apprentissage. :-)

    La je vais faire des ampli bien plus propre :-) :-) :-)


    Et maintenant, j'ai également supprimé le if(!Cell) ...



    Merci a tous et particulièrement a Alf et Kubernan !


  • Haaaaa!,

    J'avais hâte de quitter le bureau pour venir faire joujou dans Xcode ;-)


    Donc, même si Kubernan m'avais fourni une version qui marche, j'ai refait le tout dans ma version ensuite.

     




     


    Tu fais bien, le but n'était pas de te mâcher le travail, mais d'illustrer mes remarques en tout fournissant le code adéquat.


     





    Alors la, il y a un truc qui fallait vraiment la peine: depuis un bout mon premi blême n'était plus le prepareForSegue




     


    Tout à  fait.


     


     




    et c'est un comportement que j'aurais reproduit dans tous mes projets avec des plantages a n'en plus finir !

    Donc bon apprentissage. :-)




     


    Surtout que ce type de plantage n'est pas facile à  résoudre quand on débute : faut penser à  aller fouiner du côté du Storyboard.


     





    Et maintenant, j'ai également supprimé le if(!Cell) ...

     




     


    À vrai dire ce n'est pas le plus important. Ca allège le code c'est sûr. Mais cela rend compte d'un autre problème : en piochant des bouts de codes à  droite et à  gauche on obtient un ensemble pas très cohérent au final.

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