Переключение выбранного состояния ячейки TableView с помощью мыши

По умолчанию NSTableView позволяет пользователю очистить выбор строк, щелкнув в любом месте пустой области табличного представления. Однако это не всегда интуитивно понятно, а иногда даже невозможно (например, когда табличное представление фактически не имеет внутри себя пустой области).

Так как же разрешить пользователю отменить выбор строки, просто щелкнув ее еще раз? В этом случае не вызываются обычные методы делегата (например, -tableView:shouldSelectRow:), поэтому таким образом вы не сможете зафиксировать щелчок по уже выбранной строке.


person Arnold    schedule 16.10.2013    source источник


Ответы (1)


Вы хотите определить свой собственный подкласс NSTableView и настроить -mouseDown: следующим образом:

- (void)mouseDown:(NSEvent *)theEvent {

    NSPoint globalLocation = [theEvent locationInWindow];
    NSPoint localLocation = [self convertPoint:globalLocation fromView:nil];
    NSInteger clickedRow = [self rowAtPoint:localLocation];

    BOOL wasPreselected = (self.selectedRow == clickedRow);

    [super mouseDown:theEvent];

    if (wasPreselected)
        [self deselectRow:self.selectedRow];

}
person Arnold    schedule 16.10.2013