2

我有一个基于视图的表格视图,其中一行包含 NSPopupButtons。当用户更改 popUpButton 时,我需要获取包含此 popUpButton 的表行。

我首先期望得到与

NSInteger clickedRow = [tableView rowForView: ((NSPopUpButton*) sender)];

但是动作的发送者总是一个NSMenuItem对象而不是NSPopUpButton. NSMenuItem然而不是一个视图,所以我不能使用rowForView它。

目前我的 IBAction 看起来像这样:

- (IBAction)changedPopUp:(id)sender {
    NSMenuItem* selectedMenuItem = ((NSMenuItem*) sender);
    NSPopUpButton* popupButton = (NSPopUpButton*)[selectedMenuItem view];
    NSInteger clickedRow = [tableView rowForView:popupButton];
    //[...]
}

但是视图属性不是自动设置的,我发现为每个 NSMenuItem 手动设置它非常不方便。

没有简单的方法来获取表格行吗?

4

1 回答 1

1

不要为每个NSMenuItem. NSPopupButton改为设置动作和目标。然后,sender将是NSPopupButton实例,您可以使用rowForView.

缺点当然是你不能对不同的菜单项有不同的操作。

于 2016-08-18T11:01:05.760 回答