recuperer le contenu d une cellule

bonjour a tous,


 


j essai de me former en swift pour repondre a une demande professionnelle


je suis totalement novice en swift et cela semble bien different des langagues que j utilisais.


 


comment fait on pour lire et recuperer le contenu  d une cellule.


 


par exemple lorsque je developpais en windev je faisais sur ma table:


 


nomtable.nomcolonne[numligne]


 


merci de votre aide


Mots clés:

Réponses

  • En général tu ne récupères pas le contenu d'une cellule.


    Tu récupères les données depuis ton datasource.




  • En général tu ne récupères pas le contenu d'une cellule.


    Tu récupères les données depuis ton datasource.




     


    daccord, mais le tavleview est bien mon datasource?


    dans ce cas, n est il pas possible de lire directement une cellule de l objet  en se positionnant directement sur la ligne souhaitee?


     


    pouvez vous me donner la pratique a adopter concretement svp ou me dire ou trouver un exemple pratique mais simple.


    encore une fois je debute et j ai besoin de comprendre la base, avant de jongler


     


    merci

  • En pseudo code, parce que je code pas en Swift, mais les frameworks sont les mêmes en Objective-C:


    myTableView.cell(forRowAt:myIndexPath) retourne nil si la cellule n'est pas visible. Donc déjà , c'est mal barré dans certains cas.


    Ensuite, une cellule, c'est juste de l'habillage, c'est de l'UI, ce n'est pas ton modèle.


     


    As-tu le code de la population de ta tableView ? On pourra t'aider avec un cas plus concret je pense.


  • deja merci,


     


    sinon pour le besoin, je dois refonter une  application windev en swift.


    il y a une table de saisie avec plusieurs colonnes:


     



    +
    +
    +
    +
    +
    +

    code    + nom          + adresse   + date arrivee    + date depart  + age1  +



    +
    +
    +
    +
    +
    +

     


    ensuite en fonction de la ligne selectionnee, je dois afficher la fiche detaillee


    et calculer le nombre de age1, age2, etc.. pour une periode donnee


     


    pour faire cela, en windev par exemple, je lis simplement les valeurs des colonnes de la ligne sur laquelle est le focus. et j effectue mais traitements


     


    encore merci de votre aide


     


     


     


     




    +
    +
    +
    +
    +
    +



  • daccord, mais le tavleview est bien mon datasource?




     


    Non, la NSTableView n'est pas sa propre dataSource. Il faut la connecter à  un autre objet.


     


     




    je dois refonter une  application windev




     


    Arghhh  >:D


     


    Bon sérieusement, il faut respecter le paradigme MVC (Model View Controller) :


    - Tu stockes tes données dans un tableau externe (NSMutableDictionary par exemple)


    - Tu n'utilises la NSTableView que pour visualiser les données de ton tableau


    - La liaison se fait via un objet tierce, le controller, que tu crée pour gérer la glue entre le tableau et la NSTableview.

  • LeChatNoirLeChatNoir Membre, Modérateur

    Là , il s'agit d'un modèle "Master=>details". Ta table affiche les enregistrements "maà®tres" et quand tu en choisis un, tu zoomes sur le détail.


     


    Il va falloir te former un peu au MVC et regarder des tutos sur le master=>details. Il y en a plein.


     


    Ce qu'il faut retenir, c'est que tu dois avoir une classe modèle qui va s'occuper de tes données. Tu peux utiliser Coredata pour les stocker.


     


    Ton Controller va aller solliciter ton modèle pour récupérer les données et les passer à  ta vue (qui sera une tableView par exemple).


     


    Quand tu sélectionnes ta ligne, ton controller va appeler le controller détail en lui passant la réfénrence de la ligne sélectionner.


  • En passant, une question aux tenanciers, il n'était pas nécéssaire de se présenter avant toute chose auparavant ?


    Bon, c'est pas mon job  >:)


  • CéroceCéroce Membre, Modérateur
    décembre 2017 modifié #9

    sinon pour le besoin, je dois refonter une  application windev en swift.



    Sérieux, si tu n'as pas au minimum 3 mois à  temps complet devant toi pour apprendre, sous-traite. Tu n'as même pas idée dans quoi tu t'engouffres.

    Tiens justement, je suis en train de réécrire en natif une appli écrite en Windev ;-)

     



    pour faire cela, en windev par exemple, je lis simplement les valeurs des colonnes de la ligne sur laquelle est le focus. et j effectue mes traitements



    Comme Larme a tenté de t'expliquer, ça ne fonctionne pas du tout ainsi en Cocoa.


    Une UITableView affiche des données sous forme de table. Pour cela, sa propriété dataSource pointe vers un objet qui se conforme au protocole UITableViewDataSource. Il s'agit souvent d'un UITableViewController, mais ce n'est pas obligatoire.


    La table ne contient pas de données, son rôle est seulement de les afficher. C'est le rôle de la dataSource de les fournir. Comme une application Cocoa est basée sur le paradigme MVC, la dataSource (couche contrôleur) ira chercher les données dans le Modèle, qui par exemple, fera appel à  une base de données.



    Pour réagir aux événements, UITableView les signale à  son délégué (propriété .delegate), qui est un objet qui se conforme au protocole UITableViewDelegate. Là  encore, il s'agit souvent d'un UITableViewController, mais ce n'est pas obligatoire.


    Lorsqu'une cellule de la table est touchée, la méthode déléguée tableView(_ :didSelectRowAt:) est appelée et fournit les index de la section et de la ligne de la cellule touchée. Il faut alors consulter le Modèle pour qu'il donne l'objet représenté par la cellule.


    On ne consulte pas une cellule, parce que ce n'est qu'une représentation des données, pas les données elles-même.


  • DrakenDraken Membre
    décembre 2017 modifié #10

    Regarde ces vidéos (en français) réalisé par un universitaire de Jussieu : http://pagesperso.lip6.fr/Fabrice.Kordon/5I452-2014/semaine-08.php


     


    Tu y trouveras une explication complète sur le fonctionnement de TableView avec des exemples simples.


     


    Bienvenu au fait. Tu peux venir te présenter ici : http://forum.cocoacafe.fr/forum/17-présentation-des-membres/


  • je vais regarder tout cela


     


    merci a tous


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