2012-01-01 54 views
5

我有一个基于视图的NSOutlineView绑定到NSTreeController。一切似乎都正常工作,直到我在我的委托中实施outlineView:isGroupItem:方法,然后组头突然停止显示。像这样基于视图的NSTableView/NSOutlineView和isGroupItem

enter image description here

我证实,如果我改变NSOutlineView到细胞为主,然后作为组项目正常显示了。对于NSTableView也观察到类似的行为。有其他人遇到过这个问题吗?

回答

11

解决了!

通过用相同的标识符作为柱定位视图原来我不得不实现在NSOutlineView委托以下方法

- (NSView *)outlineView:(NSOutlineView *)outlineView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        item:(id)item { 
    if ([self outlineView:outlineView isGroupItem:item]) { 
     NSString *vId = [[[outlineView tableColumns] objectAtIndex:0] identifier]; 
     return [outlineView makeViewWithIdentifier:vId owner:self]; 
    } 
    return [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; 
} 

显然,通过基于NSOutlineView生成视图为表中的每个单元格的默认视图。但是,在组项目/组行的情况下,没有与该行关联的tableColumm,因此该视图变为零并且不显示。

玩弄苹果的TableViewPlayground sample project真的有帮助!强烈推荐!

+0

感谢您的详细更新。 – 2012-01-02 00:19:32

+0

+1对于TableViewPlayground引用 – rluba 2013-06-09 09:34:33

+0

为什么'[outlineView:viewForTableColumn:item:'在[官方'NSOutlineViewDelegate'文档](https://developer.apple.com/library/mac/documentation/cocoa/reference/ NSOutlineViewDelegate_Protocol/Reference/Reference.html) – zakdances 2013-09-12 10:46:19

相关问题