recuperer le contenu d une cellule
cdsoft
Membre
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:
Connectez-vous ou Inscrivez-vous pour répondre.
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.
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
+
+
+
+
+
+
Non, la NSTableView n'est pas sa propre dataSource. Il faut la connecter à un autre objet.
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.
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
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 ;-)
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.
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