我有一个NSTableView,其中一列包含NSPopUpButtonCells。这一列被分配给一个IBOutlet。我的应用程序的控制器类在它的init中创建一个菜单,并将其分配给NSTableColumn的dataCell,即NSPopUpButtonCell。
菜单如下所示:
NSPopUpButton
NSMenu
NSMenuItem item1
NSMenuItem item2
NSMenuItem item3
NSMenu
NSMenuItem item3_1
NSMenuItem item3_2
NSMenuItem item4
NSMenuItem item4_1
NSMenuItem item4_2
NSMenuItem item4_3当我单击菜单并选择item1或item2时,将触发数据源的tableView:setObjectValue:forTableColumn:row:,objectValue为0或1,即所选项目的索引。但是,当我从一个子菜单中选择一项时,我得到的objectValue是-1。我如何才能获得所选择的菜单项?
发布于 2011-03-19 02:26:09
我不认为我会依赖-tableView:setObjectValue:forTableColumn:row:当您有一组复杂的菜单和子菜单时;如果我没记错的话,在子菜单开始使用时,并没有真正的“对象值”映射到菜单项-- NSMenu太老了,不能像您希望的那样使用NSIndexPath,而且还不够复杂,无法尝试将整数映射到菜单和子菜单。(另外,菜单往往会动态变化很多,因此"3“的含义会让人感到不安。)
在您的NSMenuItems (或者可能只是父NSMenus)上设置一个目标和操作,以便在选择每一个时做一些可靠的事情。
发布于 2011-02-20 17:03:03
您是否使用与检索项目1和2相同的代码?我想你是的,但有时这些事情很容易被忽视=/
https://stackoverflow.com/questions/4878757
复制相似问题