我正在使用一个NSOutlineView
有两列的。我dataSource
为大纲视图提供了代表文件类型的自定义类的项目树(即,您使用 UTI 对其进行初始化)。第一列是文件类型的显示名称(例如,“源代码”、“Interface Builder NIB 文档”等)。第二列NSPopUpButtonCell
应该允许用户为给定的文档类型选择一个处理程序(想想 Xcode 的“文件类型”首选项窗格,你就在那里)。
我可以NSMenu
为树中的给定项目生成一个,填充基于 UTI 的启动服务数据库条目的选项,以及相关的应用程序图标等等。事实上,菜单本身非常好用,通过NSPopUpButtonCellWillPopUpNotification
.
问题是,尽我所能尝试,当菜单没有弹出时,单元格总是包含以下两件事之一:空字符串或单元格的默认文本,前者如果-handlerName
项目的结果(分配给列的属性)是非nil
,否则为后者。
此外,我手动调用-selectItem:
实例NSPopUpButtonCell
,这似乎是错误的。相比之下,左边的列,它只是一个NSTextFieldCell
,一切正常(尽管被允许,它所要做的就是从项目中读取值并呈现它)。
(免责声明:我在 Cocoa UI 方面还很新;我知道 Objective-C 和许多其他编程语言,但我没有大量构建 Mac OS X UI 的经验,所以要温柔)。