Ajouter/supprimer des lignes/à partir de NSTableView en Objective-C
Je suis en train de faire un simple Todo application dans le Cacao. J'ai ajouté une classe (et un NSObject à la XIB) MATodoController:
MATodoController.h
#import <Cocoa/Cocoa.h>
@interface MATodoController : NSObject
{
IBOutlet NSTableView *table;
}
- (IBAction)addItem:(id)sender;
- (IBAction)removeItem:(id)sender;
@end
MATodoController.m
#import "MATodoController.h"
@implementation MATodoController
- (void)addItem:(id)sender
{
}
- (void)removeItem:(id)sender
{
}
@end
J'ai une sortie de la "table" à un NSTableView et deux actions "addItem" et "removeItem" appelée par les clics de bouton.
Est-il possible (bien sûr, il y a un chemin)Comment puis-je ajouter de nouvelles lignes /supprimer les lignes sélectionnées et d'un NSTableView (les utilisateurs peuvent sélectionner plusieurs lignes à la fois)?
Merci d'avance.
Oh, encore une chose: La NSTableView a une seule colonne (qui se compose de cases à cocher).
OriginalL'auteur | 2009-08-20
Vous devez vous connecter pour publier un commentaire.
Dans le Cacao, vous n'avez pas vraiment ajouter/supprimer des lignes d'une NSTableView directement. Dans votre contrôleur, vous pouvez adopter la NSTableDataSource protocole, qui dispose de 2 méthodes vous avez besoin pour mettre en œuvre afin d'obtenir ce travail:
Ces méthodes de répondre aux messages de l'affichage de la table envoie à la source de données (configuré dans l'Interface Builder) afin de remplir le tableau avec des lignes de données. Dans ces implémentations de méthode, vous devrez retourner les informations de la méthode exige (le nombre de lignes; la valeur d'une cellule dans une ligne particulière) en interrogeant quelle que soit la banque de données, vous avez travaillé.
Votre
addItem
etremoveItem
méthodes aurez également besoin de mémoriser/supprimer la ligne de données (quelle qu'en soit la représentation que vous avez concocté). Vous pouvez créer une nouvelle classe qui représente chaque ligne et de les stocker dans un NSMutableDictionary, par exemple.En plus d'Apple docs, voici un bon tutoriel pour cette tâche.
Bonne chance!
NSTableViewDataSource (pas NSTableDataSource) et l'utilisation NSIntegers au lieu ints.
OriginalL'auteur Clint Miller
Avec du Cacao, de la façon la plus simple de le faire est avec des liaisons. Créer un
NSArrayController
, liée à une instance deNSMutableArray
, et de lier leNSArrayController
à laNSTableView
.CocoaDev donne un bon aperçu de la procédure. Vous pouvez également lire Apple la documentation, et CocoaDev excellent l'article sur les liaisons.
OriginalL'auteur e.James