当通过绑定和NSPopUpButtonCell填充表视图时,表中的自定义NSArrayController出现了问题。
弹出按钮单元格是创建的,但是当试图通过重写弹出按钮单元格的setMenuItem:item方法访问出口时,它是nil。
这是预期的行为吗..?
是否应该在创建时使用另一种方法来替换菜单?
基本上,我需要出口链接到我的控制器(NSWindowController)的那个文档窗口,这样我就可以相应地自定义NSPopUpButtonCell菜单时,从自定义弹出按钮填充。
使用绑定的解决方案会更好--但是当重写setObjectValue:时,我可以看到它从来没有用nil参数调用过。但是,使用股票NSPopUpButtonCell会产生一个适当填充的弹出菜单。
发布于 2012-12-04 12:50:12
不需要覆盖任何内容就可以在NSPopUpButtonCell列中填充NSTableView。需要知道的是,您在NSTableColumn上设置绑定,而不是在单元格上设置绑定。通常,xib中有一个NSArrayController,它绑定到包含弹出的所有选项的NSArray,然后选择带有弹出单元格的列,然后转到它的绑定。与此截图类似(请注意右侧检查器中填充的内容、内容对象和选定的对象绑定):

如果您想要一个有用的示例,您可以查看这个项目 I中的另一个StackOverflow问题。关于让NSPopUpButtonCell使用NSAttributedStrings,有许多无关的内容,但是xib中的绑定构成了一个如何将NSTableColumn绑定到弹出(其选项由绑定填充)的工作示例。
https://stackoverflow.com/questions/13460116
复制相似问题