gpt4 book ai didi

cocoa - 基于 View 的 NSTableView/NSOutlineView 和 isGroupItem

转载 作者:行者123 更新时间:2023-12-04 13:43:00 24 4
gpt4 key购买 nike

我有一个绑定(bind)到 NSTreeController 的基于 View 的 NSOutlineView。在我实现 outlineView:isGroupItem: 之前,一切似乎都正常工作方法,然后组头突然停止出现。像这样

enter image description here

我确认如果我要将 NSOutlineView 更改为基于单元格的,则组项会正确显示。 NSTableView 也观察到类似的行为。有没有其他人遇到过这个问题?

最佳答案

解决了!
原来我必须在 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];
}
显然,默认情况下,基于 View 的 NSOutlineView 通过定位具有与列相同标识符的 View 来为表中的每个单元格生成 View 。然而,在组项目/组行的情况下,没有 tableColumm与该行相关联,因此 View 结果为 nil 并且不显示。
玩苹果的 TableViewPlayground sample project真的有帮助!强烈推荐!
附录:在 Interface Builder 中,如果您添加 Source List 对象而不是 Outline View,它将为您添加两个原型(prototype) View 行。
允许您设计不同的标题和数据行,并通过它们的标识符在代码中引用它们。
标题单元格:
Interface Builder > Header Cell
数据单元:
Interface Builder > Data Cell
当然,您也可以手动添加任意数量的原型(prototype) View 行。

关于cocoa - 基于 View 的 NSTableView/NSOutlineView 和 isGroupItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com