问题标签 [nstreecontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
515 浏览

objective-c - NSOutlineView -- 组合多个来源

在我的应用程序中,我有一个NSOutlineViewNSTreeController- 获取数据的应用程序,而后者又从核心数据模型中获取数据。

我现在想做的是向大纲视图添加组标题和一些额外的行——显然这些东西应该存在于模型之外并成为视图的一部分。但是,尽管我为此挠头,但我想不出任何方法可以在不修改底层模型的情况下让大纲视图显示这些东西,这显然是一个很大的禁忌。

非常感谢您的帮助。我觉得我在这里遗漏了一些明显的东西......

0 投票
8 回答
9709 浏览

objective-c - NSOutlineView:删除显示三角形和缩进

我正在为一个项目使用 NSOutlineView,但似乎无法弄清楚两件事:

  • 如何删除树节点的显示三角形。iTunes 之类的应用似乎可以做到这一点:

替代文字

是否有某种用于此的 NSOutlineView Delegate 方法?或者它需要一个子类?

  • 如何禁用项目的缩进。我试过使用setIndentationPerLevel:并将其设置为 0,以及在 Interface Builder 中将列缩进更改为 0,但它似乎没有任何效果。
0 投票
1 回答
270 浏览

cocoa - 你如何为每个父项存储子 NSTableView 设置?

NSTableView为其 parent 中的每个项目存储 的设置(理想情况下利用其自动保存功能)的最佳方法是什么NSTreeController?我基本上希望重现 iTunes 分别存储每个播放列表的列设置的方式。

不过,我有很多列,并且不想手动存储每个单独的列大小等。我也在使用 Core Data,并且希望使用我现有的数据模型来保存这些信息的解决方案。

更新

我找到了一些代码(来自 Daniel Jalkut的 aCategory),可以轻松存储和读取 an的列设置的NSDictionary表示。NSTableView因此,我在我的核心数据实体中创建了一个二进制属性,该属性现在存储该实体视图的设置。

我希望能够在选择实体的每个实例时自动检索设置。我曾尝试在 my 上使用 Key-Value Observation 来执行此操作NSTreeController,但不幸的是它没有给我足够的通知。我想知道我要切换的项目,以便在用新节点的设置覆盖之前存储前一个节点的设置。

我尝试用我能找到的每一个论点来观察@"selection"@"selectedObjects"和,但似乎没有一个能正常工作。我在适当的时间收到通知,但在属性更改发送的字典中没有任何有用的信息。@"selectedIndexPaths"options"change"

0 投票
1 回答
282 浏览

cocoa - NSTreeController 获得添加的孩子

当 NSTreeController -(void)addChild:(id)sender被调用时,有没有办法获得NSManagedEntity创建的?

文档提到此方法的结果将推迟到下一次循环运行。

0 投票
2 回答
963 浏览

cocoa - 如何使用 NSOutlineController 从 NSTreeController 中删除所有元素

我使用NSTreeControllerwithNSOutlineController来显示 1parent-1child 层次结构中的内容。我的结构是这样的:
- 父母
- 孩子
- 父母
- 孩子

现在,当用户按下刷新按钮时,我想删除所有节点并重新填充它。

但一切似乎都在起作用。

我想 binging NSTreeControllerwithNSArrayController应该会有所帮助,但我真的不知道绑定的步骤 - NSArrayController- NSTreeController- NSOutlineController

0 投票
1 回答
426 浏览

objective-c - 带有 Cocoa 绑定的可编辑 OutlineView

您如何绑定 NSOutlineView(或 NSTableView)以使项目可以编辑?我知道它有可编辑的字段,但我不确定如何使用它,所以任何帮助都会很好。我有一个绑定到 NSArray 的 NSTreeController。谢谢。

0 投票
1 回答
579 浏览

objective-c - 将实体绑定为 NSTreeController 的子项的正确方法

我对如何填充一个绑定到两个独立实体的人的理解是否正确,NSOutlineview这些NSTreeController实体之间有关系:

NSTreeController有一个 managedObjectContext 绑定到我的appDelegate. 我Object Controller为此是一个名为clients的实体。MyNSOutlineViews tableColumn绑定到NSTreeController(和clientskey path clientCompanyNSOutlineView ,这会用公司名称列表正确填充 my 。

我的第二个实体projects有一个名为projectParent的关系属性,它反向绑定到客户端中的一个名为clientChild的属性。通过这种关系,我希望我的子项由以相关clientCompany作为父项NSTreeController的相关项目条目组成。

为了尝试这个,我在 my 中创建了clientChild,然后将同一控制器的 my 绑定到我的客户实体clientChild ,并设置为“已选择”。children key pathNSTreeControllercontent set key pathController Key

这种方法和各种组合似乎不起作用并产生不同的错误。只有当我省略了最后一个 ' content set' 绑定步骤时,程序在启动时运行时不会出现错误,并且在大纲视图条目旁边有打开/关闭图标,这表明它像我想要的那样填充。在尝试打开其中一个条目时,它会产生一个错误,提示我的项目实体不符合我的clientChild属性的 KVC。我一遍又一遍的绑定,似乎找不到问题。

0 投票
2 回答
126 浏览

xcode - 有没有办法使用 IB 和两个实体的关系来填充 OutlineView?

我之前曾在其他人那里触及过这个问题,但是在写了对上一个问题的答案之后,我想知道为什么这是不可能的——或者我是否错过了它可能的事实?

鉴于Interface Builder非常擅长以图形方式链接各种方法和委托以及数据源,是否可能没有直接的图形方式来填充OutlineView使用Core Data模型中创建的两个实体,这些实体设置了父子关系,以便(我相信) 有足够的信息来定义子节点将在哪些父节点下列出outlineview

这让我感到困惑,因为我认为这是一种非常合乎逻辑的方式来存储两个不同的信息源并随后显示它们的关系。目前,我正在尝试不使用NSTreeController,使用我自己的datasource,并尝试进入远远超出我目前能力的领域。

0 投票
1 回答
325 浏览

objective-c - mouseDown 后 NSTreeController 的 selectionIndexPaths 更新经常中断

问题背景:

我有一个 NSOutlineView,每个 tableColumn 都以编程方式绑定到 NSTreeController 的排列对象,因此无需绑定 selectionIndexPaths。NSTreeController 的排列对象的来源是一个 mutableArray。我通过- (void)insertObject:(id)object atArrangedObjectIndexPath:(NSIndexPath *)indexPath;在主线程上执行动态地将所有节点添加到 NSTreeController。我以如下方式覆盖了 NSOutlineView 的 mouseDown 事件: - (void)mouseDown:(NSEvent *)event { /*...myMethods...*/ [super mouseDown:event]; }

问题:

当节点添加得非常快并且我在 outlineView 上执行 mouseDown 事件时,通常会发生下一种情况:

将节点添加到 TreeController 的线程会中断 mouseDown 事件调用的序列(我猜),因此insertObject: atArrangedObjectIndexPath:在 then 之前调用setSelectionIndexPaths:。这就是为什么 outlineView 中的新选择消失了,而 treeController 仍然有旧版本的selectedIndexPaths的原因。

我尝试了一种部分解决方案:阻止我的insertObject:方法(使用@synthesized(outlineView)),使其无法更改整个大纲视图,但它经常在线程冲突和应用程序冻结时上升。

有什么想法可以解决选择消失的问题吗?

0 投票
1 回答
224 浏览

cocoa - 在大纲视图中显示 NSXMLDocument 时如何设置 TreeController 的内容对象

我想在大纲视图中显示一个 NSXMLDocument。值得庆幸的是,苹果有一个名为“Using Tree Controllers With NSXML Objects”的文档。

但我没有得到的一件事是我如何设置 TreeController 的内容对象。

首先,我将“绑定到”设置为要显示的 NSXMLDocument,并将“模型键路径”设置为它的 rootElement。但这行不通。

我发现我必须将“绑定到”设置为具有 NSXMLDocument 作为其属性的对象,并将“模型键路径”设置为 NSXMLDocument.rootElement。

那为什么?