2010-09-06 3 views
1

J'ai rencontré un problème avec NSTableView. Le problème est que la vue de table demande des données trop tôt (elle demande immédiatement les données du contrôleur), comme dans, les données ne sont pas là quand la vue de table le demande. Les autres méthodes qui collectent les données à afficher dans la vue de table n'ont pas fini de s'exécuter au moment où NSTableView demande les données.NSTableView demandant des données trop tôt

Espérons que cela a un sens! J'utilise Objective-C et fait mac dev (pas iphone) btw.

Quoi qu'il en soit, y a-t-il un moyen de contourner ce problème?

Merci d'avance.

+0

Quelle est la source de données? Est-ce à travers une liaison ou une coutume? –

Répondre

3

NSTableView demande les données probablement parce que vous lui avez indiqué qu'il y a par exemple 20 lignes de données. Une fois qu'il sait qu'il y a 20 lignes, il commencera à le demander. Si vous utilisez la source de données NSTableView Delegate, c'est facile, il suffit de renvoyer 0 pour le nombre de lignes jusqu'à ce que tout soit prêt - puis renvoyez le nombre de lignes qui existent.

IE vous avez besoin de ces appels dans le délégué:

– numberOfRowsInTableView: 
– tableView:objectValueForTableColumn:row: 

Si vous n'utilisez pas le NSTableViewDataSource, et ont câblé le contrôleur dans Interface Builder, vous devrez donner en quelque sorte que le contrôleur les données quand tout est prêt.

+0

merci! cela semble avoir fonctionné :) –

1

Vous semblez remplir la vue de la table de manière asynchrone? Si c'est le cas, vous pouvez appeler reloadData ou reloadDataForRowIndexes:columnIndexes: sur votre vue de table dans la méthode qui gère la réponse pour actualiser la vue de table une fois les données chargées.

Questions connexes