我有一个NSTableView
,其中一列包含NSPopUpButtonCell
个。此列已分配给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。我怎样才能获得所选的菜单项?
答案 0 :(得分:1)
我认为我不依赖于-tableView:setObjectValue:forTableColumn:row:当你有一组复杂的菜单和子菜单时;如果我没记错的话,当子菜单进入游戏时,菜单项映射并没有真正的“对象值” - NSMenu太旧了,不能像你希望的那样使用NSIndexPath,并且不够复杂,无法尝试将整数映射到菜单和子菜单。 (另外,菜单往往会动态变化很多,所以“3”的含义会非常蠕动。)
在NSMenuItems(或可能只是父NSMenus)上设置目标和操作,以便在选择每个NSMenuItem时执行可靠的操作。
答案 1 :(得分:0)
您是否使用相同的代码检索第1项和第2项?我想你是,但有时这些事情很容易被忽视= /