Frage

Ich mache eine einfache Todo-Anwendung in Cocoa. Ich habe eine Klasse (und ein NSObject zum XIB) MATodoController hinzugefügt:

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

Ich habe einen Ausgang ‚Tisch‘ zu einem NSTableView und zwei Aktionen ‚addItem‘ und ‚removeItem‘ genannt durch Tastenklicks.

Gibt es eine Möglichkeit (natürlich gibt es einen Weg) Wie kann ich neue Zeilen hinzufügen / entfernen ausgewählten Zeilen zu und von einem NSTableView (Benutzer können mehrere Zeilen gleichzeitig auswählen)?

Vielen Dank im Voraus.

Oh, eines noch:. Die NSTableView hat nur eine Spalte (die von Kontrollkästchen besteht)

War es hilfreich?

Lösung

In Cocoa, Sie fügen Sie nicht wirklich / entfernen Zeilen in eine NSTableView direkt. In Ihrem Controller, können Sie das NSTableDataSource Protokoll verabschieden, die zwei wichtige Methoden, die Sie zu implementieren, um benötigen hat diese Funktion zu erhalten:

- (int) numberOfRowsInTableView:(NSTableView *)aTableView
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex

Diese Methoden werden auf Nachrichten reagieren die Tabellenansicht, um es sendet die Datenquelle (konfigurierte im Interface Builder), um die Tabelle mit Zeilen von Daten zu füllen. In diesen Verfahren Implementierungen haben Sie die Informationen zurück, dass das Verfahren erfordert (die Anzahl der Zeilen, um den Wert einer Zelle in einer bestimmten Zeile). Durch, was Datenspeicher abzufragen haben Sie gearbeitet

Ihre addItem und removeItem Methoden werden auch Zeilendaten müssen zum Speichern / Löschen (in welcher Darstellung Sie haben ausgedacht). Sie könnten eine neue Klasse erstellen, die jede Zeile und speichern sie in einer NSMutableDictionary zum Beispiel darstellt.

Neben Apples docs, hier ist ein für diese Aufgabe.

Viel Glück!

Andere Tipps

Mit Kakao, der einfachste Weg, dies zu tun ist, mit Bindungen. Erstellen Sie ein NSArrayController, verbunden mit einer Instanz von NSMutableArray, und binden das NSArrayController zum NSTableView.

CocoaDev gibt einen guten Überblick über das Verfahren . Sie können auch Apples Dokumentation und CocoaDev ausgezeichnete Artikel auf Bindungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top