NSOutlineView
是 NSTableView
的一个子类。目前,NSTableView
支持两种实现。
- 基于单元格(Cell-based)。
- 基于视图(View-based)。
要制作像 OSX 10.8 Finder 样式的侧栏(带有自动灰色图标样式),需要使用具有源列表突出显示样式的基于视图的表格视图。
使用 NIBs,这是很简单的工作。没有什么难度。(请参见 SidebarDemo)但我想避免任何 NIBs 或 Interface Builder。我想纯粹通过编程来制作侧栏。
在这种情况下,我有一个大问题。据我所知,并没有办法为特定的单元格提供原型视图。当我打开 .xib
文件时,我看到 <tableColumn>
包含 <prototypeCellViews>
。并且这指定了将用于该列的视图。我无法找到如何使用公共 API 在编程方式下设置此内容。
作为解决方法,我尝试使用 -[NSTableView makeViewWithIdentifier:owner:]
和 -[NSTableView viewAtColumn:row:makeIfNecessary:]
手动创建单元格,但它们都没有返回视图实例。我创建了一个 NSTableCellView
,但它没有图像视图和文本字段实例。我也尝试设置它们,但这些字段被标记为 assign
,因此这些实例会立即被释放掉。我试图通过强制保留它们来保持它们,但它不起作用。NSTableView
不管理它们,所以我确定表视图不喜欢我的实现。
我相信有一个属性可以为列设置此原型视图。但是我找不到它们。在哪里可以找到此属性并使用源列表样式的系统默认的 NSOutlineView
进行编程?