该方法选择在NSTableView的可可OS X的细胞时被调用?(which method is c

2019-06-24 22:12发布

我有一个NSTableView的,我想存在于细胞中的值。 我只有一个列,因此,我只需要行号

我可以用这个[的tableView selectedRow] - 但我在哪里把这个我想把这个在被调用上的任何行的选择方法。

-(void)tableViewSelectionDidChange:(NSNotification *)notification{

NSLog(@"%d",[tableViewController selectedRow]);

}

上述方法也不起作用我收到错误 - [NSScrollView selectedRow]:无法识别的选择发送到实例0x100438ef0]

我想提供类似的方法在iPhone tableview-

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {
}

Answer 1:

什么是tableViewController对象? 只有NSTableView情况下,应对selectedRow 。 你可以得到当前表视图从(发送通知的) notification的对象属性:

Objective-C的:

-(void)tableViewSelectionDidChange:(NSNotification *)notification{
    NSLog(@"%d",[[notification object] selectedRow]);
}

迅速:

func tableViewSelectionDidChange(notification: NSNotification) {
    let table = notification.object as! NSTableView
    print(table.selectedRow);
}


Answer 2:

斯威夫特3(从Eimantas的回答):

func tableViewSelectionDidChange(_ notification: NSNotification) {
    let table = notification.object as! NSTableView
    print(table.selectedRow);
}


Answer 3:

你应该通知的addObserver这样

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(tableViewSelectionDidChangeNotification)
                                             name:NSTableViewSelectionDidChangeNotification object:nil];

它将动作时的tableView选择的行

祝好运



Answer 4:

我的2美分Xcode的10 / 4.2的SWIFT

  func tableViewSelectionDidChange(_ notification: Notification) {
        guard let table = notification.object as? NSTableView else {
            return
        }
        let row = table.selectedRow
        print(row)
    }


文章来源: which method is called when selecting a cell in the NSTableView in Cocoa OS X?