Kein Erfolg mit NSOutlineView

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

  • Kein Erfolg mit NSOutlineView

    Hallo,

    ich versuche verzweifelt mich in das Thema OutlineView mit DataSource einzuarbeiten, aber irgendwie funktioniert bei mir kein einziges Tutorial!
    Ich habe jetzt schon mehrere Tutorials durchgearbeitet und erhalte stets eine leere OutlineView.

    z.B. dieses hier:
    alauda.ro/2012/04/30/nsoutlineview-inside-out/

    Beim Punkt "Build and run the application. You should get something like this:" sollten laut Tutorial eigentlich die drei Namen zu sehen sein, bei mir wird nur eine leere OutlineView angezeigt.

    Verstehe ich das richtig, dass die 4 Methoden quasi die regulären OutlineView-Methoden überschreiben? Zumindest die ersten 3 Methoden kann ich so halb nachvollziehen(für jedes Child-Item ein Array-Element hinzufügen; Expandable immer auf NO setzen, da ja nur 3 statische Einträge ohne Verzweigung angezeigt werden sollen; Anzahl der Childs ermitteln). Bei der 4. Methode outlineView:objectValueForTableColumn:byItem: weiß ich nicht genau, was da warum gemacht bzw. zurückgegeben wird, also warum "return item;" im Gegensatz zur regulären Methode für dieses Beispiel notwendig ist...

    Funktioniert das Tutorial bei euch?

    Quellcode

    1. #import <Cocoa/Cocoa.h>
    2. @interface AppDelegate : NSObject <NSApplicationDelegate, NSOutlineViewDataSource> {
    3. IBOutlet NSOutlineView *myOutlineView;
    4. NSArray *dataSource;
    5. }
    6. @property (assign) IBOutlet NSWindow *window;
    7. @end


    Quellcode

    1. #import "AppDelegate.h"
    2. @implementation AppDelegate
    3. - (void)awakeFromNib
    4. {
    5. dataSource = [NSArray arrayWithObjects:@"John", @"Mary", @"George", nil];
    6. #if DEBUG
    7. NSLog(@"%@", dataSource);
    8. #endif
    9. }
    10. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    11. {
    12. // Insert code here to initialize your application
    13. }
    14. - (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item
    15. {
    16. return [dataSource objectAtIndex:index];
    17. }
    18. - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
    19. {
    20. return NO;
    21. }
    22. - (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
    23. {
    24. return [dataSource count];
    25. }
    26. - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
    27. {
    28. return item;
    29. }
    30. @end
    Alles anzeigen


    Viele Grüße,
    4Bit
  • Hallo jopjip,

    Dein Tipp mit der DataSource war der Entscheidende! Nach dem Verbinden wurden die outlineView-Methoden dann auch aufgerufen und jetzt werden die Namen auch korrekt in der OutlineView angezeigt. Vielen vielen Dank. :thumbsup:

    Viele Grüße,
    4Bit