[Résolu] - NSTableView et datasource
skimpy
Membre
Bonjour,
Je suis en train de regarder l'exemple d'Apple TableViewPlayground sur les NSTableView (affichant plus que du texte, la partie ATComplexTableView). J'ai compris que les lignes, dans cet exemple, étaient créées via (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row mais il me semblait qu'il fallait obligatoirement avoir ces 2 méthodes déclarées (dixit le livre d'Hillegass) :
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
Dans l'exemple TableViewPlayground, seule (int)numberOfRowsInTableView est déclarée.
Qu'en est-il exactement pour le datasource ?
Merci
Philippe
Je suis en train de regarder l'exemple d'Apple TableViewPlayground sur les NSTableView (affichant plus que du texte, la partie ATComplexTableView). J'ai compris que les lignes, dans cet exemple, étaient créées via (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row mais il me semblait qu'il fallait obligatoirement avoir ces 2 méthodes déclarées (dixit le livre d'Hillegass) :
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
Dans l'exemple TableViewPlayground, seule (int)numberOfRowsInTableView est déclarée.
Qu'en est-il exactement pour le datasource ?
Merci
Philippe
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
De quel contrôleur parles-tu? Il y a plusieurs exemples.
Dans certains, le contenu est fourni en utilisant les bindings.
Je parle du contrôleur suivant : ATComplexTableViewController.m
Merci
Philippe
[tt]- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row[/tt]
De fait, on ne nourrit pas la cellule avec un objet renvoyé par la data source, mais le délégué a accès à la couche modèle et change lui-même la cellule. Cette manière de procéder est inhabituelle, mais est sans doute nécessaire dans ce cas précis.
En fait la réponse est dans le guide d'Apple concernant les table views :
- Populating View-Based Table Views Programmatically / The required methods :
In order to function, a programmatically implemented view-based table must implement the following :
1. The numberOfRowsInTableView: method that is defined by the NSTableViewDataSource protocol.
2. The tableView:viewForTableColumn:row: method that is defined by the NSTableViewDelegate Protocol.
Voilà , c'est donc spécifique aux View-Based Table Views.
Philippe