UITableView et Container View

2»

Réponses

  • Ben quand tu remplis dans le viewDidLoad ça s'affiche bien et après il n'y a plus de TableView...
  • KubernanKubernan Membre
    novembre 2012 modifié #33
    Bien. Ai réussi à  faire fonctionner ton projet. Le problème semble provenir du bouton "Ajouter un nombre". Si tu mets ce bouton dans la vue même de FirstViewController cela fonctionne (à  une ligne de code prêt car la ligne NSString *cellValue = /size][/font][color=#4F8187][font=Menlo][size=2]pile[/size][/font][/color][color=#3D1D81][font=Menlo][size=2]objectAtIndex[/size][/font][/color][font=Menlo][size=2]:indexPath.[/size][/font][color=#703DAA][font=Menlo][size=2]row[/size][/font][/color][font=Menlo][size=2; n'est pas bonne puisque pile contient des NSNumber).



    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 ta pile faut que tu passes
    <br />
    [NSString stringWithFormat:@&quot;%d&quot;,i.doubleValue]
    




    au lieu de i directement dans la méthode addObject
  • AliGatorAliGator Membre, Modérateur
    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.
  • Je t'avoue que j'ai pas trop réfléchi à  tout ces problèmes.

    J'ai juste vu le coup pratique pour un test d'affichage image/smile.png' class='bbc_emoticon' alt=':)' />



    Donc ducoup vaut mieux stocker les NSNumber puis pour l'afficher un truc du genre ?
    <br />
    NSNumber * myNumber = [pile objectAtIndex:indexpath.row];<br />
    NSString * myString = [NSString localizeStringWithFormat:@&quot;%d&quot;,myNumber.doubleValue];<br />
    cell.textLabel.text = myString;<br />
    


    Ca passerait mieux ça ?

  • AliGatorAliGator Membre, Modérateur
    Tout à  fait.



    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.
  • Kubernan :

    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". image/wink.png' class='bbc_emoticon' alt=';)' />



    AliGator et Soldras :

    Merci pour les conseils !
  • 'Kubernan' a écrit:


    Bien. Ai réussi à  faire fonctionner ton projet.




    Chapeau Kubernan...

    Juste une remarque. Je croyais que storyboard devait simplifier les choses !!! image/crazy.gif' class='bbc_emoticon' alt=' B) ' />
  • Et oui ! Storyboard simplifi les choses ! Mais pas toutes ! image/wink.png' class='bbc_emoticon' alt=';)' />
  • CéroceCéroce Membre, Modérateur
    'Alf1996' a écrit:


    Juste une remarque. Je croyais que storyboard devait simplifier les choses !!! image/crazy.gif' class='bbc_emoticon' alt=' B) ' />


    La bonne blague! Non, par contre, il fait gagner du temps.
Connectez-vous ou Inscrivez-vous pour répondre.