NSPopUpButtonCell,带有NSTableView中的分层菜单

时间:2011-02-02 19:10:59

标签: objective-c cocoa nstableview nspopupbuttoncell

我有一个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。我怎样才能获得所选的菜单项?

2 个答案:

答案 0 :(得分:1)

我认为我不依赖于-tableView:setObjectValue:forTableColumn:row:当你有一组复杂的菜单和子菜单时;如果我没记错的话,当子菜单进入游戏时,菜单项映射并没有真正的“对象值” - NSMenu太旧了,不能像你希望的那样使用NSIndexPath,并且不够复杂,无法尝试将整数映射到菜单和子菜单。 (另外,菜单往往会动态变化很多,所以“3”的含义会非常蠕动。)

在NSMenuItems(或可能只是父NSMenus)上设置目标和操作,以便在选择每个NSMenuItem时执行可靠的操作。

答案 1 :(得分:0)

您是否使用相同的代码检索第1项和第2项?我想你是,但有时这些事情很容易被忽视= /