NSTableview mit mehreren HeaderViews

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

  • NSTableview mit mehreren HeaderViews

    Hallo,
    ich habe ein NSSearchField. Bei Eingabe in dieses Suchfeld wird ein NSPopover angezeigt, in dem sich wiederum ein NSTableView befindet. Ich möchte nun mit der Suche sowohl im Web, als auch lokal suchen. Das ganze soll dadurch durch 2 HeaderViews getrennt werden.
    Ungefähr wie hier: [Blockierte Grafik: http://i.stack.imgur.com/htLaz.png].
    Zu erwähnen wäre noch, dass ich ein view-based NSTableView verwende. Ist das so überhaupt möglich ? Sollte ich was anderes als ein TableView verwenden ?
    Danke für eure Antworten !
  • Danke habe es nun so gelöst und nun klappt es fast. Ich habe noch das Problem, dass ich die Buttons vor der 2 Gruppe mit einer anderen Action versehen will, als die nach der 2 Gruppe. Dazu habe ich dem Button in dem TableColumn den tag 2 gegeben und in meiner Delegate Methode sowas versucht:

    Quellcode

    1. -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    2. if(row < 4 && row != 0) { //Bei row 4 ist die 2 Gruppe, bei 0 die erste Gruppe
    3. NSButton *button = [tableView viewWithTag:2];
    4. [button setImage:[NSImage imageNamed:NSImageNameRevealFreestandingTemplate]];
    5. [button setAction:@selector(revealInLib:)];
    6. }
    7. else {
    8. NSButton *button = [tableView viewWithTag:2];
    9. [button setAction:@selector(addToLib:)];
    10. [button setImage:[NSImage imageNamed:NSImageNameAddTemplate]];
    11. }
    12. }
    Alles anzeigen



    Leider ändert sich dabei die Action und das Image der rows völlig zufällig und nicht permanent.
    Jemand eine Idee wieso das nicht funktioniert ?
  • Du musst Dir eine NsTableCellView vom Tableview erstellen lassen:

    Quellcode

    1. -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    2. NSTableCellView *cell = [ tableView makeViewWithIdentifier:@"identifier" owner:self ];
    3. NSButton *button = [ cellView viewWithTag:tag ];
    4. // selektor konfigurieren
    5. return cell;
    6. }

    Die cell erstellst Du im IB im Tableview. Kannst auch eine Subklasse machen mit einer Button property, dann sparst Du Dir das fehleranfällige viewWithTag.

    Gruß, Markus
  • Danke an alle habe es nun mitHilfe von Markus Snippet gelöst. Hatte das vorher ähnlich:

    Quellcode

    1. if(row < 4 && row != 0) { //Bei row 4 ist die 2 Gruppe
    2. NSButton *button = [tableView viewWithTag:2];
    3. [button setImage:[NSImage imageNamed:NSImageNameRevealFreestandingTemplate]];
    4. [button setAction:@selector(revealInLib:)];
    5. }
    6. else {
    7. NSButton *button = [tableView viewWithTag:2];
    8. [button setAction:@selector(addToLib:)];
    9. [button setImage:[NSImage imageNamed:NSImageNameAddTemplate]];
    10. }
    11. NSString *identifier = [tableColumn identifier];
    12. if([identifier isEqualToString:@"searchCell"]) {
    13. NSTableCellView *cellView = [tableView makeViewWithIdentifier:@"searchCell" owner:self];
    14. cellView.imageView.image = [NSImage imageNamed:@"tv-icon"];
    15. [cellView.textField setStringValue:@"Test"];
    16. return cellView;
    17. }
    18. return nil;
    Alles anzeigen



    Aber wenn ich

    Quellcode

    1. NSButton *button = [cellView viewWithTag:2];
    Hier cellView nehme und nicht tableView und das ganze dann in die if-Abfrage packe, klappt es. Also danke !