NSOutlineView Text setzen

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

  • NSOutlineView Text setzen

    Hallo,
    ich versuche in einem macOS Projekt (Objective-C) eine NSOutlineView mit Daten zu füllen. Die Datenstruktur wird übernommen, aber die Text werden nicht gesetzt (siehe Bild). Mittels der Methode

    Quellcode

    1. NSArray *childrenNode1 =
    2. [[NSArray alloc] initWithObjects:
    3. [NSDictionary dictionaryWithObjectsAndKeys:
    4. @"Knoten11", @"nodeName",
    5. @"Knotenbeschreibung 11", @"nodeDescription",
    6. [NSArray array], @"children",
    7. nil],
    8. [NSDictionary dictionaryWithObjectsAndKeys:
    9. @"Knoten12", @"nodeName",
    10. @"Knotenbeschreibung 12", @"nodeDescription",
    11. [NSArray array], @"children",
    12. nil],
    13. nil];
    14. NSArray *childrenNode3 =
    15. [[NSArray alloc] initWithObjects:
    16. [NSDictionary dictionaryWithObjectsAndKeys:
    17. @"Knoten31", @"nodeName",
    18. @"Knotenbeschreibung 31", @"nodeDescription",
    19. [NSArray array], @"children",
    20. nil],
    21. [NSDictionary dictionaryWithObjectsAndKeys:
    22. @"Knoten32", @"nodeName",
    23. @"Knotenbeschreibung 32", @"nodeDescription",
    24. [NSArray array], @"children",
    25. nil],
    26. [NSDictionary dictionaryWithObjectsAndKeys:
    27. @"Knoten33", @"nodeName",
    28. @"Knotenbeschreibung 33", @"nodeDescription",
    29. [NSArray array], @"children",
    30. nil],
    31. nil];
    32. self.webDavContent = [[NSMutableArray alloc]initWithObjects:
    33. [NSDictionary dictionaryWithObjectsAndKeys:
    34. @"Knoten1", @"nodeName",
    35. @"Knotenbeschreibung 1", @"nodeDescription",
    36. childrenNode1, @"children",
    37. nil],
    38. [NSDictionary dictionaryWithObjectsAndKeys:
    39. @"Knoten2", @"nodeName",
    40. @"Knotenbeschreibung 2", @"nodeDescription",
    41. [NSArray array], @"children",
    42. nil],
    43. [NSDictionary dictionaryWithObjectsAndKeys:
    44. @"Knoten3", @"nodeName",
    45. @"Knotenbeschreibung 3", @"nodeDescription",
    46. childrenNode3, @"children",
    47. nil],
    48. nil];
    49. ...
    50. - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
    51. {
    52. NSLog(@"col ident:%@ itemtext:%@",tableColumn.identifier,[item valueForKey:[tableColumn identifier]] );
    53. NSTableCellView *textCell = [outlineView makeViewWithIdentifier:tableColumn.identifier owner:self];
    54. [[textCell textField] setStringValue:[item valueForKey:[tableColumn identifier]] ];
    55. return textCell;
    56. }
    Alles anzeigen

    sollte nach meinem Verständnis die entsprechende Text der Datenstruktur übernommen werden. Die identifiers in 'nodeName' und 'nodeDescription' sowie'DataSource' und 'delegate' sind entsprechend gesetzt, sonst könnte man die richtige Struktur ja nicht sehen. Ich frage mich, was ich noch vergessen haben könnte.
    In Zeile 52 des Quellendes werden die Daten richtig in der Console ausgegeben. Development Target ist OS X 10.10.
    Vielen Dank für eure Antwort !

    Bildschirmfoto 2016-08-04 um 15.59.16.png
    Si tacuisses, philosophus mansisses !
  • macmoonshine schrieb:

    Das geht aber wahrscheinlich nicht über den Interface Builder, oder? Da hast du ja keine Prototypen.
    Doch, das geht auch über den Interface-Builder mittels Prototypen. Du gibst dann jeder unterschiedlichen NSTableCellView einen anderen identiifier, an Hand dessen dann später die CellViews erzeugt werden. Außerdem kannst Du auch mittels "registerNib:forIdentifier:" die NSTableCellViews in eigene NIBs auslagern.