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

objective-c - 具有两个不同核心数据 NSManagedObject 实体的 NSTreeController

我正在将我的 iOS 应用程序移植到 Mac,并想设置一个 NSTreeController 来管理实体的层次结构。此层次结构中有两种不同的 NSManagedObject 类型,Group 和 Item,它们具有一对多的关系(一个 Group 对多个 Items)。但是我在设置 NSTreeController 时遇到了麻烦;我收到一条错误消息:

似乎 NSTreeController 旨在使用一种类型的 NSManagedObject 进行设置,其子对象引用自身,并且让子对象成为不同类型的对象是行不通的。这个对吗?如果是这样,我需要做些什么来纠正这个问题,同时保持新数据模型能够使用轻量级迁移从旧数据模型正确迁移?如果我确实能够使用两种不同的 NSManagedObjects 完成 NSTreeObject,我应该如何设置它?

0 投票
1 回答
224 浏览

objective-c - 如何获取选定 NSTreeController 对象的所有子项、孙子项和孙子项

我有这个简化的模型:http: //i.imgur.com/EAug3.png

我在 NSOutlineView 中订购了这些元素,并由 NSTreeController 控制。

所以我创建了一些虚拟数据:

现在的问题是:如果我选择 Folder1,我怎样才能得到一个包含 Element1、Element2、Element3 的数组,如果我选择 Subfolder1,我怎样才能得到一个包含 Element1 和 Element2 的数组?

我的第一种方法是创建一个新的 NSArrayController 绑定到我的 NSTreeController 对象的自定义属性(我为此派生了一个类),但该属性只调用一次,之后不再更新。我的第二种方法是编写一个 Fetch Predicate,但我没有成功...... :(

有任何想法吗?

0 投票
1 回答
626 浏览

cocoa - 基于视图的 NSOutlineView 在父视图之上绘制子视图

使用 NSOutlineView + NSTreeController + Core Data 会导致奇怪的大纲视图布局。正如您在下图中所见,大纲视图在展开“父级”时为“子级”创建了一个空间,而是将“子级”绘制在“父级”之上。我创建了一个按钮,按下该按钮会调用 [outlineVIew reloadData] 方法,该方法会导致视图正确绘制。

核心数据模型:

  • 父母
  • 孩子们
  • 是叶
  • 姓名

我的xib设置:

  • NSOutlineView 委托设置为文件的所有者
  • NSTreeController 绑定到我的文档核心数据上下文
  • NSTableColumn 绑定到 NSTreeController.arrangedObjects
  • NSTextField 绑定到 NSTableCellView.objectValue.name

NSPersistentDocument 类:

结果:

折叠父级的大纲视图

折叠父级的大纲视图

父级展开和子级绘制在上面的大纲视图

父级展开和子级绘制在上面的大纲视图

0 投票
1 回答
1542 浏览

cocoa - 如何将 NSTreeController 的孩子绑定到订购多关系的核心数据?

Apple 在 Lion 的 Core Data 中引入了有序对多关系。我创建了一个名为 TreeNode 的实体,它具有一个 1:1 对象关系、一个 1:1 父关系和一个有序的多关系子关系。

然后我NSTreeController将子键路径设置为 TreeNode.children。运行应用程序仅显示第一级元素。所以孩子没有工作。由于 children 是有序的对多关系,因此相应的类有一个NSOrderedSet孩子。我添加了一个自定义方法

到有效的 TreeNode。我找不到有关该主题的任何文档。NSTreeController绑定到有序对多关系时,这真的是要走的路吗?提前致谢。

0 投票
1 回答
1638 浏览

nspredicate - 用 NSSearchField 过滤一个 NSTreeController ?

这个问题似乎以前被问过,但从未得到回答。那么是否可以用 NSSearchField 过滤一个 NSTreeController?如果可以,那怎么做?

谢谢!

0 投票
2 回答
2479 浏览

objective-c - NSTreeController add 和 addChild 方法

转到更新

我有一个NSTreeController控制器,将 ( Content Object) 绑定到我的应用程序委托的内容 ( NSTreeNode *)。我NSOutlineView的窗口中也有绑定到我的控制器。

一切正常,内容显示在大纲视图中,但我不能addaddChildinsert)任何项目,尽管控制器方法和canAddcanAddChild等)控制器方法总是返回NO(我有一个“启用”的按钮绑定到控制器和这个按钮被禁用)。

我的错误在哪里?

更新

我想提供更多关于我的情况的信息。

我有一个 MyNode 类:

我的 nib 文件中也有 NSTreeController 对象。在IBchildrenKeyPath中设置为和为空。childNodescountKeyPathisLeafKeyPath

控制器模式设置为Class,类名称为MyNode

内容对象(不是内容数组)绑定到MyDocumentsrootNode属性:

我的窗口中有 NSoulineViewcontent绑定到 TreeController 的arrangedObjects. 显示内容。我什至可以编辑节点的标题,但无法通过 TreeController 添加或插入任何(子)节点。

我有 2 个按钮:“添加子项”和“插入子项”连接到 TreeController 的addChildinsertChild操作,并启用绑定到 TreeController 的canAddChildcanInsertChild属性。按钮被禁用..我无法添加或插入任何子节点。

错在哪里?

更新 2

我有一些好消息 =)

我像这样更改了我的 Document 类:

并将内容数组(不是内容对象)绑定到MyDocument.rootNodes属性,一切正常。

为什么 addXXX 方法不适用于单个对象?我在文档中找不到任何关于它的信息......

为什么 TreeController 可以将根元素添加到rootNodes? rootNodesNSArray,不是NSMutableArray

0 投票
1 回答
634 浏览

cocoa - NSTreeController does not respond to reloadData

I have a NSTreeController with bindings to a class.

NSOutlineView dirTree binds to the NSTreeController

In particular Outline View Content binds to arrangedObjects

This appears to work well, but I am at my wits end to figure out why it does not respond to reloadData.

The NSTreeController Key paths are:-

These are listed below; numberOfSubDirs returns a simple count of subDirectories (with an added diagnostic display).

If I call a refresh function which updates the data then calls [dirTree reloadData]; I get the following output:-

If I delete a directory (externally in Finder) and call the refresh function I get the following output:-

NSTreeController calls numberOfSubDirs on the parent "Shared", and is correctly told it now has 6 subdirectories.

However it then queries 7 subdirectories, including the deleted item "bZTree2", and does not refresh the display to show only the 6 which exist.

0 投票
1 回答
322 浏览

nsoutlineview - 如何在 NSOutlineView 中获取 Control Click 的目标

我有一个由 NSTreeController 控制的 NSOutlineView。NSOutlineView 连接到 Interface Builder 中的上下文菜单。

Control Click 调出我的菜单,点击的行被“选中”,带有一个带有边框的苍白突出显示。

我似乎找不到任何方法来找到“选择”哪一行。selectionIndexPath 和 selectedObjects 为零。

0 投票
1 回答
203 浏览

objective-c - 如何使用 NSTreeController 和 NSOutlineView 观察项目的编辑

我有一个NSOutlineView使用NSTreeController. 树控制器管理具有属性的数组,NSMutableDictionary包括:NSString *name, and NSArray* children.

name当UI 发生变化时,如何获得通知?

0 投票
1 回答
1044 浏览

cocoa - NSTreeController 的“arrangedObjects”到底是什么?

我正在尝试将 NSTreeController 的“arrangedObjects”绑定到自定义视图的“managedContent”(例如,它可以显示自定义大纲)。在二传手...

由于 newManagedContentArray ("arrangedObjects") 显然不是 NSArray(因此我不能 addObject: etc. 等),因此没有任何结果,而是显示为 NSControllerTreeProxy。我的问题是,“arrangedObjects”到底应该是什么?我应该绑定它吗?如果是这样,怎么做?