我有一个基于视图的表视图,其中一行包含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手动设置它非常不方便。
有没有简单的方法来获取表格行?
答案 0 :(得分:1)
不要为每个NSMenuItem
设置操作和目标。请改为设置NSPopupButton
的操作和目标。然后,sender
将成为NSPopupButton
个实例,您可以使用rowForView
。
缺点当然是您不能对不同的菜单项执行不同的操作。