如何找到用户点击了 NSBrowser 中的任何行?

Ram*_*Ram 2 macos cocoa objective-c nsbrowser

在我Browser选择默认行的实现中,我使用了以下代码。

[browser setTarget:self];
[browser setAction:@selector(singleClickOnBrowser:)];
[browser sendActionOn:NSLeftMouseDown];
[browser selectRow:0 inColumn:0];
[browser sendAction];
Run Code Online (Sandbox Code Playgroud)

有没有办法区分用户点击和第一次选择的行来选择默认行?

Chu*_*k H 5

在我的应用程序中,我需要跟踪在 NSBrowser 中选择的最后一个项目。以下设置 NSBrowser:

- (void)awakeFromNib
{
    [browser setDelegate:self];
    [browser setTarget:self];
    [browser setAction:@selector(browserCellSelected:)];
    [browser setSendsActionOnArrowKeys:YES];
}
Run Code Online (Sandbox Code Playgroud)

以下处理被选中的单元格。这适用于鼠标或键盘所做的选择。如果您的应用允许多项选择,则您的操作方法将需要处理该问题。

- (void)browserCellSelected:(id)sender
{
    NSIndexPath *indexPath = [browser selectionIndexPath];
    MyItem *myItem = [browser itemAtIndexPath:indexPath];
    if (myItem)
    {
        NSLog(@"Selected Item: %@", myItem.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,编程选择不会触发 browserCellSelected: 方法,用户点击不会调用委托的 browser:selectRow:inColumn: 方法。