Wie kann ich ein gebundenes Array in Teile zerlegen, die automatisch die Tabelle füllen?

stimmen
0

Ich verwendet , um dieses ‚Tutorial‘ meine Array ‚Sammlung‘ zu einem NSTableView auf meine Schnittstelle aufgerufen zu binden: http://www.cocoadev.com/index.pl?NSArrayController

Das Interface Zeug ist nicht so schwer. Es wird schwierig, wenn ich versuche, die Daten tatsächlich in meinem Array in die Ansicht zu zeigen.

in meiner .h-Datei:

@interface MyDocument : NSDocument
{
    NSMutableArray *collection;
    //other variables
}

und in meiner .m-Datei:

@implementation MyDocument
@synthesize collection;
     //quite some functions

     inside one function (that works):
     [collection addObject:fileName];

     //some other functions

     inside the init function:
     collection = [[NSMutableArray alloc] init];

Jetzt denke ich das Array gebunden ist gut an die Schnittstelle und den Tableview im Innern, aber natürlich die Tableview und ihre Spalten müssen in einer bestimmten Art und Weise gefüllt werden. Im Moment erscheint nichts ein Element hinzugefügt wird . mit Sammlung addObject: filename Funktion

Soll ich einen Sub-Array als ein Element, gefüllt mit Feldern erstellen? Und wie soll ich diese Werte / Felder auf die spezifischen Spalten binden. (die Felder ‚ Künstler ‘, ‚ Titel ‘, usw.)

Ich habe bereits jede Spalte in Interface Builder gebunden Array Controller mit Controller - TastearrangedObjects ‘ und Modell Key PathKünstler ‘, ‚ Titel ‘, usw.

Bitte halten Sie die Erklärung einfach, da ich langsam zu denken, fange ich nie dieses Array Controller Sache bekommen ... Objective-C scheint nicht so schwer, aber die Bindung, die es braucht, ist, was ich einfach nicht bekommen. Apples Beispiele sind nicht ausreichend, um Neulinge

Veröffentlicht am 27/01/2009 um 20:46
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Gerade das Array mutiert nichts sagen, dass das Array verändert hat. Sie müssen KVO Benachrichtigungen für die Mutation senden.

Der richtige Weg , dies zu tun ist , um Zugriffsmethoden für die Eigenschaft zu implementieren, dann Ihre eigenen Accessoren nennen. In diesem Fall sollten Sie implementieren insertObjectInCollection:atIndex:und die Länge des Arrays als Index (geben [self insertObjectIntoCollection:fileName atIndex:[self countOfCollection], nachdem auch die Umsetzung countOfCollection).

Wenn Sie Accessoren implementieren, dann, wenn ein Objekt auf die Eigenschaft bindet, Cocoa wird die Accessoren in KVO Magie wickeln, das die entsprechenden Meldungen für die Mutation senden.

Beantwortet am 28/01/2009 um 00:35
quelle vom benutzer

stimmen
1

Typischerweise Ihre Daten füllen Sie ein Wörterbuch verwenden würden (der Schlüssel wäre die keyPath sein, und die Daten - Objekt) für jede Zeile, oder noch besser, eine Klasse erstellen , um die Daten zu repräsentieren und eine neue Instanz für jede Zeile erstellen. Bindungen kann ein wenig knifflig zuerst sein (wenn Sie Cocoa neu sind zuerst an die Datenquelle Methoden verwendet werden), aber einen Blick auf haben dieses Tutorial und die Beispiele hier . Beide enthalten Beispiele , die Sie herunterladen können und untersuchen , wie genau die Bindungen im Interface Builder einrichten.

Beantwortet am 27/01/2009 um 22:19
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more