Aggiungere / rimuovere le righe a / da NSTableView in Objective-C
-
19-09-2019 - |
Domanda
Sto facendo una semplice applicazione Todo in Cocoa. Ho aggiunto una classe (e di un NSObject al 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
Ho una presa 'tavolo' a una e due azioni 'addItem' NSTableView e 'removeItem' chiamato dai clic sui pulsanti.
C'è un modo (naturalmente c'è un modo) Come posso aggiungere nuove righe / Remove Selected file da e verso un NSTableView (gli utenti possono selezionare più righe in una sola volta)?
Grazie in anticipo.
Ah, ancora una cosa:. L'NSTableView ha una sola colonna (che si compone di caselle di controllo)
Soluzione
In Cocoa, non realmente aggiungere / rimuovere righe a una NSTableView direttamente. Nel vostro controller, si potrebbe desiderare di adottare il protocollo NSTableDataSource, che ha 2 metodi importanti da attuare al fine di ottenere questo lavoro:
- (int) numberOfRowsInTableView:(NSTableView *)aTableView
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
Questi metodi rispondere ai messaggi della vista tabella invia alla sua fonte di dati (configurato in Interface Builder) al fine di compilare la tabella con le righe di dati. In queste implementazioni di metodo, si dovrà restituire le informazioni che il metodo richiede (il numero di righe, il valore di una cella in una determinata riga). Interrogando qualunque archivio di dati che hai lavorato fuori
I tuoi addItem
e removeItem
metodi saranno anche bisogno di memorizzare / cancellare i dati di riga (in qualsiasi rappresentazione che avete architettato). Si potrebbe creare una nuova classe che rappresenta ogni riga e memorizzarli in un NSMutableDictionary, per esempio.
Oltre a documenti di Apple, ecco una buon tutorial per questo compito.
In bocca al lupo!
Altri suggerimenti
Con Cacao, il modo più semplice per farlo è con attacchi. Crea un NSArrayController
, legata a un'istanza di NSMutableArray
, e legare il NSArrayController
al NSTableView
.
CocoaDev offre una buona panoramica di la procedura . Si può anche leggere di Apple documentazione , ed eccellenti href="http://cocoadevcentral.com/articles/000080.php" articolo su attacchi.