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 :
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.
...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...
ho que ça fait plaisir de voir une version de mon appli qui fonctionne. :-) :-) :-)
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 :-)
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).
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
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 !
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.
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 !!!)
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 :
Il faut alors utiliser self.myArray dans ton code.
4- Dans ton prepareForSegue: la ligne :
En fait un peu trop. Ton array contient déjà un string. Il suffit donc de faire :
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.
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 :
...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 ;-)
Les chats ne te suffisent déjà plus... misère...
ho que ça fait plaisir de voir une version de mon appli qui fonctionne. :-) :-) :-)
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).
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 !
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 !
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.
Tout à fait.
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.
À 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.