Cocoa 使用基于视图的NSOutline(Sourcelist)的奇怪行为
在我的应用程序中,我使用CoreData+NSTreeController+Bindings+NSOutlineView和一个对象NSOutlineViewDeleteGate创建了一个基于视图的新NSOutlineView作为侧栏源列表 我在outlineview委托中使用这些委托方法: -(BOOL)outlineView:(NSOutlineView*)outlineView isGroupItem:(id)item在我的例子中,当(核心数据)父关系为nil时,项是组 -(NSView*)大纲视图:(NSOutlineView*)大纲视图视图可折叠列:(NSTableColumn*)表格列项:(id)项返回标题单元格视图(组)或数据单元格视图(图标+文本) 我将outline视图(在XCode的Interface Builder中)的大小样式设置为“侧栏系统默认值”,这样当用户在系统首选项中更改cellview时,cellview会更改其大小 它很好用。。。但有几个问题:Cocoa 使用基于视图的NSOutline(Sourcelist)的奇怪行为,cocoa,nsoutlineview,Cocoa,Nsoutlineview,在我的应用程序中,我使用CoreData+NSTreeController+Bindings+NSOutlineView和一个对象NSOutlineViewDeleteGate创建了一个基于视图的新NSOutlineView作为侧栏源列表 我在outlineview委托中使用这些委托方法: -(BOOL)outlineView:(NSOutlineView*)outlineView isGroupItem:(id)item在我的例子中,当(核心数据)父关系为nil时,项是组 -(NSView*)
- 第一个cellview是一个组单元格(标题单元格),展开折叠时,此cellview的文本字段将上下移动。只发生在第一个
- 标题单元格中的文本字段会改变它的大小(当系统首选项中的大小改变时),但我希望标题单元格的大小保持不变,如(Lion)Finder、Mail。。。是的
- 标题单元格中文本字段的字符串值不显示为大写
- 我在数据单元的图像视图中用作图标的图像看起来是透明的(具有0.5 alpha值或类似值)
- 对于第一个cellview展开/折叠时的移动,请使用带有outlineview的方法setFloatsGroupRows:NO(谢谢Anton!)
- 如果希望groupcells的字体大小固定(即使用户在系统首选项中更改),请在IB中取消标题单元格与其表格单元格视图的绑定
- 使用valueTransformer(将字符串转换为大写)和标题单元格,字符串将显示为大写。您还可以使用nsoutlineview数据源方法-outlineView:objectValueForTableColumn:byItem:
- 最后,图标是半透明的,因为未启用。在图像单元格绑定的值或值路径(取决于您使用的路径)中取消选中“Conditionally Sets Enabled”
- 显示项目列表
- 以主细节方式编辑项目
- 删除和添加项目
- 绑定的使用
如果对任何人来说都不明显: 界面生成器中的“浮动组行”: 您可以直接在Interface Builder中设置“浮动组行”
@IBOutlet weak var sourceList: NSOutlineView!
sourceList.floatsGroupRows = false
这是一段“神奇”的代码。它工作得很好。谢谢安东!请告诉我们在组项目中显示不同图标的技巧?在我的项目中,我只能为所有子项设置相同的图标。谢谢