我有一个基于视图的表视图,其中一行包含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];
//[...]
}
但是view属性不是自动设置的,我发现为每个NSMenuItem手动设置它非常不便。
有没有简单的方法来获取表行?
最佳答案
不要为每个NSMenuItem
设置操作和目标。改为设置NSPopupButton
的操作和目标。然后,sender
将是NSPopupButton
实例,您可以使用rowForView
。
缺点当然是您不能对不同的菜单项执行不同的操作。
关于objective-c - 在基于 View 的NSTableView中获取NSPopUpButton的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12934400/