[Résolu] - NSTableView et datasource

skimpyskimpy Membre
novembre 2011 modifié dans API AppKit #1
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

Réponses

  • CéroceCéroce Membre, Modérateur
    05:14 modifié #2
    L'exemple est ici.

    De quel contrôleur parles-tu? Il y a plusieurs exemples.
    Dans certains, le contenu est fourni en utilisant les bindings.
  • skimpyskimpy Membre
    05:14 modifié #3
    Bonjour Céroce,

    Je parle du contrôleur suivant : ATComplexTableViewController.m

    Merci

    Philippe
  • CéroceCéroce Membre, Modérateur
    05:14 modifié #4
    D'après ce que je comprends du code, cela se fait dans la méthode de NSTableViewDelegate
    [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.
  • skimpyskimpy Membre
    05:14 modifié #5
    Bonjour,

    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
Connectez-vous ou Inscrivez-vous pour répondre.