Comme ton premier view controller est un initial view, ton FirstViewController est instancié automatiquement. J'ai l'impression qu'avec le bouton qui est en dehors de FirstViewController mais relié quand même à celui-ci par une action, tu as une seconde instanciation qui se réalise (avec une table view à nil).
Ce que tu peux faire c'est créer un controller pour ton initial view (qui contient le container) et associer le bouton à ce controller. L'appui sur ce bouton envoie un message de ton cru à FirstViewController.
Je ne sais pas où tu veux aller avec ce projet mais à mon avis, créer un container juste pour afficher une table view n'est pas une bonne solution.
Pour mettre des entiers ou des double dans un tableau, il y a NSNumber. C'est précisément fait pour ça : pour encapsuler (boxing) un nombre dans un objet Cocoa pour pouvoir le mettre dans un NSArray ou toute autre collection.
Convertir le double en NSString pour le stocker n'est pas une bonne pratique et risque de te donner des surprises car cela consiste à stocker une représentation du nombre et pas le nombre.
- Si ton nombre vaut 1 000 000 001, selon certains réglages et ta locale et la précision etc rien ne dit qu'il ne va pas être représenté en chaà®ne sous la forme 1e9, perdant la précision de l'unité, par exemple.
- Et sa représentation textuelle dépend de toute façon de la locale (si l'utilisateur s'amuse à changer le "Region Format" de son iPhone après avoir ajouté un nombre dans la pile, l'interprétation de la chaà®ne en nombre dans l'autre sens ne sera plus bonne car plus la même que l'interprétation inverse du nombre en chaà®ne)
- Et j'en passe, comme rien qu'au niveau du principe cela revient à mélanger la partie "View" (représentation) et "Model" (données brutes) du MVC. C'est comme si tu convertissais un montant en euros en francs puis à nouveau en euros, tu as des risques d'erreur d'arrondi etc.
Au moins tu ne fais la conversion d'un nombre (ou d'un NSNumber qui l'encapsule) en chaà®ne de caractère que quand ça t'es vraiment utile, à savoir pour l'affichage à l'écran.
Mais dans le reste de ton modèle (en particulier dans le tableau "pile") tu gardes bien le vrai nombre (encapsulé dans un NSNumber pour le manipuler en tant qu'objet Cocoa) et pas une représentation de ce nombre.
Ok merci bien pour ta solution ! En fait je faisais juste un test pour voir si un TableView s'affichait bien dans une container view mais dans mon projet je peux très bien l'afficher dans la même ViewController que mon bouton "ajouter". /wink.png' class='bbc_emoticon' alt=';)' />
Réponses
Comme ton premier view controller est un initial view, ton FirstViewController est instancié automatiquement. J'ai l'impression qu'avec le bouton qui est en dehors de FirstViewController mais relié quand même à celui-ci par une action, tu as une seconde instanciation qui se réalise (avec une table view à nil).
Ce que tu peux faire c'est créer un controller pour ton initial view (qui contient le container) et associer le bouton à ce controller. L'appui sur ce bouton envoie un message de ton cru à FirstViewController.
Je ne sais pas où tu veux aller avec ce projet mais à mon avis, créer un container juste pour afficher une table view n'est pas une bonne solution.
au lieu de i directement dans la méthode addObject
Convertir le double en NSString pour le stocker n'est pas une bonne pratique et risque de te donner des surprises car cela consiste à stocker une représentation du nombre et pas le nombre.
- Si ton nombre vaut 1 000 000 001, selon certains réglages et ta locale et la précision etc rien ne dit qu'il ne va pas être représenté en chaà®ne sous la forme 1e9, perdant la précision de l'unité, par exemple.
- Et sa représentation textuelle dépend de toute façon de la locale (si l'utilisateur s'amuse à changer le "Region Format" de son iPhone après avoir ajouté un nombre dans la pile, l'interprétation de la chaà®ne en nombre dans l'autre sens ne sera plus bonne car plus la même que l'interprétation inverse du nombre en chaà®ne)
- Et j'en passe, comme rien qu'au niveau du principe cela revient à mélanger la partie "View" (représentation) et "Model" (données brutes) du MVC. C'est comme si tu convertissais un montant en euros en francs puis à nouveau en euros, tu as des risques d'erreur d'arrondi etc.
J'ai juste vu le coup pratique pour un test d'affichage /smile.png' class='bbc_emoticon' alt=':)' />
Donc ducoup vaut mieux stocker les NSNumber puis pour l'afficher un truc du genre ?
Ca passerait mieux ça ?
Au moins tu ne fais la conversion d'un nombre (ou d'un NSNumber qui l'encapsule) en chaà®ne de caractère que quand ça t'es vraiment utile, à savoir pour l'affichage à l'écran.
Mais dans le reste de ton modèle (en particulier dans le tableau "pile") tu gardes bien le vrai nombre (encapsulé dans un NSNumber pour le manipuler en tant qu'objet Cocoa) et pas une représentation de ce nombre.
Ok merci bien pour ta solution ! En fait je faisais juste un test pour voir si un TableView s'affichait bien dans une container view mais dans mon projet je peux très bien l'afficher dans la même ViewController que mon bouton "ajouter". /wink.png' class='bbc_emoticon' alt=';)' />
AliGator et Soldras :
Merci pour les conseils !
Chapeau Kubernan...
Juste une remarque. Je croyais que storyboard devait simplifier les choses !!! /crazy.gif' class='bbc_emoticon' alt=' ' />
La bonne blague! Non, par contre, il fait gagner du temps.