Hoe kan ik delen een gebonden array in delen dat de tafel automatisch invullen?

stemmen
0

Ik gebruikte deze 'handleiding' op mijn array met de naam 'collectie' binden aan een NSTableView op mijn interface: http://www.cocoadev.com/index.pl?NSArrayController

De InterfaceBuilder spul is niet zo moeilijk. Het wordt moeilijk wanneer ik probeer om de gegevens daadwerkelijk te laten zien in mijn reeks in het uitzicht.

in mijn .h file:

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

en in mijn .m file:

@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];

Nu ik denk dat de array is goed gebonden aan de interface en de Tableview erin, maar natuurlijk de Tableview en zijn kolommen moeten worden ingevuld op een bepaalde manier. Op dit moment niets te zien na het toevoegen van een item. met collectie addObject: fileName functie

Moet ik een sub-array als één punt, gevuld met velden te creëren? En hoe moet ik binden deze waarden / velden om de specifieke kolommen. (de velden ' kunstenaar ', ' title ', etc)

Ik heb al elke kolom in Interface Builder gebonden aan Array Controller met Controller key ' arrangedObjects ' en Model Key Pad ' kunstenaar ', ' title ', etc.

Houd de uitleg eenvoudig, omdat ik langzaam begin te denken dat ik zal nooit dit Array Controller ding ... Objective-C lijkt niet zo moeilijk, maar de binding die het nodig heeft is wat ik gewoon niet. voorbeelden Apple's niet toereikend zijn om newbies

De vraag is gesteld op 27/01/2009 om 20:46
bron van user
In andere talen...                            


2 antwoorden

stemmen
1

Net muteren de array niet iets dat de array is veranderd vertellen. Je moet KVO meldingen te sturen voor de mutatie.

De juiste manier om dit te doen is accessormethoden voor het pand uit te voeren, bel dan uw eigen accessors. In dit geval, zult u wilt implementeren insertObjectInCollection:atIndex:en langs de lengte van de array als de index ( [self insertObjectIntoCollection:fileName atIndex:[self countOfCollection]na ook de uitvoering countOfCollection).

Wanneer u accessors implementeren, dan wanneer een voorwerp om het pand bindt, Cocoa zal de accessors in KVO magie die de juiste meldingen voor de mutatie stuurt wikkelen.

antwoordde op 28/01/2009 om 00:35
bron van user

stemmen
1

Typisch om uw gegevens te vullen zou je een woordenboek gebruiken (de sleutel zou sleutelpad zijn, en object de gegevens) voor elke rij, of nog beter, maak een klasse om de gegevens te vertegenwoordigen en het creëren van een nieuwe instantie voor elke rij. Bindingen kan een beetje lastig in het begin (als je nieuw bent in Cocoa wennen aan eerst de gegevensbron methoden zijn), maar eens een kijkje op deze tutorial en de voorbeelden hier . Beide bevatten samples die u kunt downloaden en te onderzoeken hoe de bindingen is opgezet in Interface Builder.

antwoordde op 27/01/2009 om 22:19
bron van user

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