问题标签 [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.
objective-c - 具有两个不同核心数据 NSManagedObject 实体的 NSTreeController
我正在将我的 iOS 应用程序移植到 Mac,并想设置一个 NSTreeController 来管理实体的层次结构。此层次结构中有两种不同的 NSManagedObject 类型,Group 和 Item,它们具有一对多的关系(一个 Group 对多个 Items)。但是我在设置 NSTreeController 时遇到了麻烦;我收到一条错误消息:
似乎 NSTreeController 旨在使用一种类型的 NSManagedObject 进行设置,其子对象引用自身,并且让子对象成为不同类型的对象是行不通的。这个对吗?如果是这样,我需要做些什么来纠正这个问题,同时保持新数据模型能够使用轻量级迁移从旧数据模型正确迁移?如果我确实能够使用两种不同的 NSManagedObjects 完成 NSTreeObject,我应该如何设置它?
objective-c - 如何获取选定 NSTreeController 对象的所有子项、孙子项和孙子项
我有这个简化的模型:http: //i.imgur.com/EAug3.png
我在 NSOutlineView 中订购了这些元素,并由 NSTreeController 控制。
所以我创建了一些虚拟数据:
现在的问题是:如果我选择 Folder1,我怎样才能得到一个包含 Element1、Element2、Element3 的数组,如果我选择 Subfolder1,我怎样才能得到一个包含 Element1 和 Element2 的数组?
我的第一种方法是创建一个新的 NSArrayController 绑定到我的 NSTreeController 对象的自定义属性(我为此派生了一个类),但该属性只调用一次,之后不再更新。我的第二种方法是编写一个 Fetch Predicate,但我没有成功...... :(
有任何想法吗?
cocoa - 基于视图的 NSOutlineView 在父视图之上绘制子视图
使用 NSOutlineView + NSTreeController + Core Data 会导致奇怪的大纲视图布局。正如您在下图中所见,大纲视图在展开“父级”时为“子级”创建了一个空间,而是将“子级”绘制在“父级”之上。我创建了一个按钮,按下该按钮会调用 [outlineVIew reloadData] 方法,该方法会导致视图正确绘制。
核心数据模型:
- 父母
- 孩子们
- 是叶
- 姓名
我的xib设置:
- NSOutlineView 委托设置为文件的所有者
- NSTreeController 绑定到我的文档核心数据上下文
- NSTableColumn 绑定到 NSTreeController.arrangedObjects
- NSTextField 绑定到 NSTableCellView.objectValue.name
NSPersistentDocument 类:
结果:
折叠父级的大纲视图
父级展开和子级绘制在上面的大纲视图
cocoa - 如何将 NSTreeController 的孩子绑定到订购多关系的核心数据?
Apple 在 Lion 的 Core Data 中引入了有序对多关系。我创建了一个名为 TreeNode 的实体,它具有一个 1:1 对象关系、一个 1:1 父关系和一个有序的多关系子关系。
然后我NSTreeController
将子键路径设置为 TreeNode.children。运行应用程序仅显示第一级元素。所以孩子没有工作。由于 children 是有序的对多关系,因此相应的类有一个NSOrderedSet
孩子。我添加了一个自定义方法
到有效的 TreeNode。我找不到有关该主题的任何文档。NSTreeController
绑定到有序对多关系时,这真的是要走的路吗?提前致谢。
nspredicate - 用 NSSearchField 过滤一个 NSTreeController ?
这个问题似乎以前被问过,但从未得到回答。那么是否可以用 NSSearchField 过滤一个 NSTreeController?如果可以,那怎么做?
谢谢!
objective-c - NSTreeController add 和 addChild 方法
转到更新
我有一个NSTreeController
控制器,将 ( Content Object
) 绑定到我的应用程序委托的内容 ( NSTreeNode *
)。我NSOutlineView
的窗口中也有绑定到我的控制器。
一切正常,内容显示在大纲视图中,但我不能add
(addChild
等insert
)任何项目,尽管控制器方法和canAdd
(canAddChild
等)控制器方法总是返回NO
(我有一个“启用”的按钮绑定到控制器和这个按钮被禁用)。
我的错误在哪里?
更新
我想提供更多关于我的情况的信息。
我有一个 MyNode 类:
我的 nib 文件中也有 NSTreeController 对象。在IBchildrenKeyPath
中设置为和为空。childNodes
countKeyPath
isLeafKeyPath
控制器模式设置为Class
,类名称为MyNode
。
内容对象(不是内容数组)绑定到MyDocument
srootNode
属性:
我的窗口中有 NSoulineViewcontent
绑定到 TreeController 的arrangedObjects
. 显示内容。我什至可以编辑节点的标题,但无法通过 TreeController 添加或插入任何(子)节点。
我有 2 个按钮:“添加子项”和“插入子项”连接到 TreeController 的addChild
和insertChild
操作,并启用绑定到 TreeController 的canAddChild
和canInsertChild
属性。按钮被禁用..我无法添加或插入任何子节点。
错在哪里?
更新 2
我有一些好消息 =)
我像这样更改了我的 Document 类:
并将内容数组(不是内容对象)绑定到MyDocument.rootNodes
属性,一切正常。
为什么 addXXX 方法不适用于单个对象?我在文档中找不到任何关于它的信息......
为什么 TreeController 可以将根元素添加到rootNodes
? rootNodes
是NSArray
,不是NSMutableArray
。
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.
nsoutlineview - 如何在 NSOutlineView 中获取 Control Click 的目标
我有一个由 NSTreeController 控制的 NSOutlineView。NSOutlineView 连接到 Interface Builder 中的上下文菜单。
Control Click 调出我的菜单,点击的行被“选中”,带有一个带有边框的苍白突出显示。
我似乎找不到任何方法来找到“选择”哪一行。selectionIndexPath 和 selectedObjects 为零。
objective-c - 如何使用 NSTreeController 和 NSOutlineView 观察项目的编辑
我有一个NSOutlineView
使用NSTreeController
. 树控制器管理具有属性的数组,NSMutableDictionary
包括:NSString *name
, and NSArray* children
.
name
当UI 发生变化时,如何获得通知?
cocoa - NSTreeController 的“arrangedObjects”到底是什么?
我正在尝试将 NSTreeController 的“arrangedObjects”绑定到自定义视图的“managedContent”(例如,它可以显示自定义大纲)。在二传手...
由于 newManagedContentArray ("arrangedObjects") 显然不是 NSArray(因此我不能 addObject: etc. 等),因此没有任何结果,而是显示为 NSControllerTreeProxy。我的问题是,“arrangedObjects”到底应该是什么?我应该绑定它吗?如果是这样,怎么做?