Tableview über ArrayController füllen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tableview über ArrayController füllen

    Guten Abend,

    ich versuche ein Tableview über einen ArrayController zu füllen (ohne CoreData). Ich habe 1 button der als add Button dienen soll, klicke ich auf diesen öffnet sich ein Dialog in dem ich bzw. mp3 Dateien auswählen kann. Klicke ich nun auf open möchte ich, dass das Tableview nun in der ersten Column den Namen der Datei einträgt zB. Test.mp3. Ich frage mich wie das bindig des Tableviews lauten muss damit das geschieht. Wenn ich über NSLog ausgebe was sich für Objekte im ArrayController befinden zeigt er es mir auch korrekt an nur eben im Tableview nicht. Hier einmal der Code:

    Quellcode

    1. - (IBAction)addSoundFile:(id)sender
    2. {
    3. NSOpenPanel* myPanel = [NSOpenPanel openPanel];
    4. [myPanel setCanChooseFiles:YES];
    5. [myPanel setAllowsMultipleSelection:NO];
    6. [myPanel runModalForDirectory:NSHomeDirectory() file:nil];
    7. NSString* file = [myPanel filename];
    8. [myArrayController addObject:file];
    9. NSLog(@"%@", file);
    10. }
    Alles anzeigen



    Der button zum Dialog öffnen ist mit der Methode verbunden. Wie müsste denn nun das binding des Tableviews sein um den Namen der Datei anzuzeigen? Muss ich ein Key erstellen?

    Gruß
  • In aller Regel hast du ein Model das deine Daten hält, also Name des Liedes, Länge, usw...
    Wenn du eine Datei mit dem OpenDialog öffnest erstellst du eine Instanz deines Models und hängst die in dein Array ein.
    In Deiner Tabelle weißt du dann jeder Spalte eine Eigenschaft deines Models zu, thats all.

    Du musst halt der Tabelle sagen, was sie wo anzeigen soll, sonst geht das nicht.
    Hast du mal die Doku bemüht?
  • Wenn du im ArrayController Keys für die Spalten bzw. Attribute deines Models angelegt hast, musste du im IB am einfachsten die jeweilie NSTableColumn in deinem NSTableView Selektieren. Dann gehste rechts im Inspector auf den Bereich bindings. Dort existiert ein aufklappbarer Punkt namens "Value". Den einmal aufklappen und ein haken setzen bei "bind to" daneben in der Combobox deinen ArrayController auswählen..controller key kannste bei arrangedObjects belassen..das ist dein Array und als model key path gibs du den entsprechenden Key an, den du vorher im ArrayController angelegt hast und der genauso heißt die dein Attribut/Property in deinem Model. Fügst du jetzt ein neues Objekt in den ArrayController, weiß er genau welche Property er in welcher Spalte anzuzeigen hat.

    Gruß
    MasterOP22