macos – 获取有关在NSTableView中选择行的通知

截至目前,我正在使用tableViewSelectionDidChange通知来检测用户何时单击NSTableView中的任何行.但是使用这个通知委托我需要取消选择所选的行[tableView deselectRow:[tableView selectedRow]],因为在另一行被选中之前它不会通知.

这种方法的问题是,一旦我取消选择一行tableViewSelectionDidChange将再次得到通知,现在我需要检查selectedRow是否为-1(因为取消选择后没有选择任何行,现在将返回-1)

在USTableView中是否存在与NSTableView中的tableView:didSelectRowAtIndexPath等效的内容?如果没有,是否有更好的方法在选择同一行时收到通知?

最佳答案 我有同样的问题,最后也在这里.

我有一个场景,我有一个歌曲的播放列表.我希望在一首歌中将状态设为“已选中”,但能够停止播放该歌曲并再次播放选择tableview的单元格.

我最终使用了一个解决方案,我在Peter Lapisu年看到了here in stackoverflow.

基本上Peter建议扩展tableview创建一个extendedDelegate属性,该属性具有 – (void)tableView:(NSTableView *)tableView didClickedRow:(NSInteger)row;.然后只需覆盖mouseDown事件,如下所示:

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

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

    [super mouseDown:theEvent];

    if (clickedRow != -1) {
        [self.extendedDelegate tableView:self didClickedRow:clickedRow];
    }
}
点赞