问题标签 [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 回答
604 浏览

cocoa - Cocoa - 在表格视图中显示嵌套数组

我有一个绑定到数组的树控制器,称为“内容”。“内容”是一个模型对象数组,称为“汽车”。每个“Car”包含一个名为“carName”的 NSString 和一个名为“mostPopularColors”的 NSMutableArray。“mostPopularColors”包含 NSMutableDictionary 对象,其键如:“最流行”、“第二流行”、“第三流行”等,值如:“红色”、“绿色”、“蓝色”等。

大纲视图绑定到树控制器排列的对象,并在“内容”中显示每个“汽车”的“汽车名称”。一个单独的表视图在一列中列出了每个“carName”。这是通过将数组控制器绑定到树控制器(控制器键:选择,模型键路径:allChildLeafs)来完成的。然后将表列值绑定到数组控制器的排列对象,模型键路径:carName。

在表格视图中,我想要另外两列分别列出最流行的颜色和第二流行的颜色。所以最终表格应该有三列列出所有汽车名称以及每辆车的两种最受欢迎​​的颜色。

我可以访问所描述的汽车名称,但不能访问颜色,因为它们本身就在数组中。

我试图制作第二个阵列控制器并将其链接到第一个但无法使其工作。

所以最后我希望能够在大纲视图中选择一辆或多辆汽车,并在表格视图中查看它们的所有名称和前两种颜色。

0 投票
2 回答
1075 浏览

objective-c - NSTreeNode mutableChildNodes 不能正常工作?

我完全困惑为什么这不起作用。我正在尝试将一个新的 NSTreeNode 插入到一个可变的子节点数组中。这是代码:

执行后,我收到各种错误:

  • -[NSCFSet initWithObjects:count:]: 尝试在 objects[0] 处插入 nil 对象
  • -[NSTreeNode _tearDownObserving]:无法识别的选择器发送到实例 0x2000bff40
  • 严重的应用程序错误。在核心数据更改处理期间捕获到异常:-[NSTreeNode _tearDownObserving]:无法识别的选择器使用 userInfo (null) 发送到实例 0x2000bff40

这些错误似乎是在处理 KVO 的东西。有没有人使用 mutableChildNodes 遇到过这样的错误?任何帮助是极大的赞赏。

注意:底层 NSTreeController 通过托管对象上下文绑定到核心数据。

0 投票
1 回答
93 浏览

objective-c - 指向 NSTreeController 新创建项的指针

有没有人知道从 NSTreeController add: 或 addChild: 方法获取指向新创建节点的指针的好方法或技巧?

0 投票
0 回答
486 浏览

xcode4.2 - NSTreeController、arrangedObjects -- NSOutlineVIew Column 如何从绑定中获取数据?

将 XCode 4.2 与 ARC 一起使用。

我正在尝试为一系列内容编写自定义视图。我正在使用 NSTreeController。

我也有一个标准的大纲视图。我的节点有一个属性“名称”,它是一个 NSAttributedString。

在我使用绑定的标准大纲视图中,我已将该列绑定到树控制器的“arrangedObjects.name” IB 抱怨这是一个属性字符串,而不是字符串,但它可以正常工作、正确显示并且可以编辑(对于字体和例如颜色)。

另一方面,在我的自定义视图中,如果我尝试将 ArrangeObjects.name 绑定到任何内容,则会出现错误——“[<_NSControllerTreeProxy 0x1003389c0> valueForUndefinedKey:]:此类与键名的键值编码不兼容。 "

当然,这与文档一致,但与 NSOutlineView 所做的不一致!

我可能可以用安排的对象.childNodes 和递归和其他代码做我想做的事,但是

  1. OutlineView 是如何做到的?和,
  2. 为什么 IB 给我一个红色警告的属性字符串去大纲视图列?
0 投票
1 回答
237 浏览

nsoutlineview - 自定义层次结构视图——NSTreeController 与否?

我有一个我想在大纲视图和自定义视图中(同时)显示的东西的层次结构。有点类似于 CH 中的 Buck 和 Yacktman(可可设计模式)示例。29,但使用大纲而不是表格。我很可能还会提供详细视图。

我之前只使用过带有单个大纲视图的 NSTreeController。现在我发现“arrangedObjects”并不是人们想要的那样。还发现(由于某种原因)所有的“canInsert”及其亲属都具有价值 NO(由于某种原因我找不到(或用谷歌找到))。到目前为止,似乎 NSTreeController 在协调我的两个视图方面帮助不大。(顺便说一句,过去我一直让我的添加、删除功能直接在模型上工作。)

在我看来,现在回到使用数据源方法会更好更简单,并使用更像 Buck 和 Yacktman 的图 29.4(第 357 页)的架构和手工制作的中介控制器。

0 投票
1 回答
350 浏览

cocoa - 理解和重现 KVC Hillegass 方法在控制器中插入/删除对象

在 Aaron Hillegass 的Cocoa Programming for Mac OS X中,Raiseman 应用程序将 Interface Builder (IB) 中的按钮连接到NSArrayControllerwith sent action -remove:。在 MyDocument 类中,他实现了两个 KVC 方法:

按下此按钮时,将-removeObjectFromEmployeesAtIndex:调用该方法并从数组中删除当前选定的 Person (Model) 对象。

  1. IB中使用的方法如何remove:导致-removeObjectFromEmployeesAtIndex:方法被调用?
  2. 如何用 重现这种效果NSTreeController
0 投票
1 回答
647 浏览

cocoa - CoreData、SourceList 和 NSTreeController

好的,这是我的问题。
我会使用 CoreData + Source List + NSTreeController 来创建类似于 Finder(或 iTunes,如果您愿意)的源列表的东西。
我的问题是我的源列表中的内容并不完全来自 CoreData。例如,我有一个名为“来自核心数据的数据”的部分(根),它使用 CoreData 填充,但我也有一些在运行时创建的“假”部分(即“收藏夹”部分)。
出于这个原因,我认为使用实体将 OutlineView 和 NSTreeController 直接绑定到 CoreData 是不可行的,我必须使用中间的东西,比如 NSMutableArray,我在开始时填充来自 CoreData 的数据和使用 ad- 的“假”部分成员的 hoc 类(如 Apple 的“SourceView”示例)。这是第一个问题:(1)我这样做对吗?
我的第二个问题是关于这个 NSMutableArray。假设使用这个数组可能是一个解决方案,我想知道哪个是填充数组的正确方法。在示例“SourceView”中,中间数组是使用 NSTreeController (insertObject:) 在运行时填充的,但是另一种解决方案我在想的是继承 NSMutableArray 并直接更改数组的内容。(2)我是否以这种方式破坏了MVC?

0 投票
1 回答
189 浏览

cocoa - NSTreeController:“canInsert”绑定的自定义行为

我有一个NSOutlineViewNSTreeController.

此外,还有一个用于向大纲视图添加新元素的按钮。我将按钮的标志绑定enabled到树控制器的canInsert属性。

我只想允许向大纲视图添加最多 5 个元素。之后,canInsert应该返回NO

我创建了自己的子类NSTreeController并覆盖canInsert了,但是按钮的启用状态没有改变,因为它没有意识到添加元素时树控制器发生了变化。

我还实现了:keyPathsForValuesAffectingCanInsert并尝试返回各种属性,例如content, arrangedObjects,但这里没有运气。

0 投票
1 回答
126 浏览

nstreecontroller - AlwaysUsesMultipleValuesMarker 在 NSTreeController 中做了什么?

根据苹果的文档,


设置接收器是否始终在选择多个对象时始终返回多个值标记,即使它们具有相同的值。

讨论:

如果您的应用程序不允许编辑多个值,则将标志设置为 YES 可以提高性能。默认为否。


但是,即使在阅读文档之后,我也很难理解这一切的含义。任何人都可以通过示例提供更简单的解释吗?

0 投票
0 回答
357 浏览

macos - NSTreeController 添加新/选择/可编辑对象问题

我有一个 NSOutlineView 备份 NSTreeController ,它从 NSManagedObjectContext 获取数据,除了插入新对象外,一切正常。

我想插入一个新对象,然后立即将焦点放在它上面并使其可编辑。

如果我通过以下方式创建一个新的 NSManagedObject:

它会立即插入,但我似乎无法选择并获取它。

现在,如果我通过

它立即被选中,我可以使其可编辑。

问题是我不能同时使用这两种方法(我看到重复条目),并且如果不首先使用#1,就不能使用方法#2。

理想情况下,我想使用方法#2,但不重复输入。

那么,插入/添加由 Core Data 支持的新对象的首选方法是什么?