TableView startet Editieren bei erster Auswahl

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

  • TableView startet Editieren bei erster Auswahl

    Hi Leute,

    ich hab ein seltsames Problem mit ner NSTableView - view based. Die TableView leg ich per Interfacebuilder an, die einzelnen Zeilen manuell. Das Dumme ist - immer wenn ich per Maus eine Zeile auswähle (nicht auf eine bereits ausgewählte klicke sondern auf eine nicht ausgewählte klicke um die Auswahl zu ändern), springt die TableView sofort bzw. nach der üblichen Verzögerung in den Edit-Modus. Das allerdings nur dann, wenn ich eine action oder doubleAction zuweise. Weise ich keine action zu, muss ich (wie es sein soll) erst auf eine ausgewählte Zeile klicken, um das Editfeld zu aktivieren. Was mache ich falsch? Hier der Code (alle Einstellungen im Interfacebuilder sind auf Standard):

    Quellcode

    1. #import "MyAppDelegate.h"
    2. @interface MyAppDelegate()
    3. @property (weak) IBOutlet NSTableView *tableView;
    4. @end
    5. @implementation MyAppDelegate
    6. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    7. {
    8. // Insert code here to initialize your application
    9. self.tableView.target = self;
    10. self.tableView.action = @selector(tableViewClicked:);
    11. }
    12. - (void)tableViewClicked:(NSTableView *)sender
    13. {
    14. NSLog(@"action raised");
    15. }
    16. - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
    17. {
    18. NSTableCellView *view = [NSTableCellView new];
    19. NSRect textFieldRect = NSMakeRect(5, 1, 100, 17);
    20. NSTextField *textField = [[NSTextField alloc] initWithFrame:textFieldRect];
    21. [textField setBordered:NO];
    22. textField.drawsBackground = NO;
    23. textField.font = [NSFont systemFontOfSize:12.0];
    24. [textField.cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
    25. textField.stringValue = [NSString stringWithFormat:@"Row #%ld", row];
    26. view.textField = textField;
    27. [view addSubview:textField];
    28. return view;
    29. }
    30. - (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row
    31. {
    32. return row != 0;
    33. }
    34. - (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row
    35. {
    36. return row == 0;
    37. }
    38. - (void)tableViewSelectionDidChange:(NSNotification *)notification
    39. {
    40. NSLog(@"selection did change!");
    41. }
    42. - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
    43. {
    44. return 10;
    45. }
    46. @end
    Alles anzeigen