问题标签 [nsoutlineview]
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.
cocoa - NSTableView 和 NSOutlineView 在 tab 键上编辑
我的应用程序有一个NSOutlineView
和一个NSTableView
,我对两者都有同样的问题。选中任一行后,按 Tab 键会将第一列置于编辑模式,而不是让下一个键查看第一响应者。要进入下一个关键视图,您需要在所有列之间切换。
此外,切换到任一视图会导致最后一列进入编辑模式,需要更多的切换选项卡才能进入其先前的关键视图。
万一这很重要,我使用的是自动计算的键视图循环,而不是我自己的,我NSWindow
设置为autorecalculatesKeyViewLoop = YES
. 一旦用户选择编辑列,我想在列之间切换,但我不认为 Tab 键触发编辑模式是标准行为。
更新
感谢以下有用的回复,我解决了。基本上,我-keyDown
在我的自定义表格视图类中进行了覆盖,该类处理表格视图中的制表符和移位制表符。然而,解决表格视图中的 shift-tabbing 问题更加困难。如果它接受来自另一个视图的控制,我YES
在自定义表视图中设置一个布尔属性。-acceptsFirstResponder
当当前事件是 shift-tab 事件时,委托会-tableView:shouldEditTableColumn:row
进行检查keyDown
。-tableView:shouldEditTableColumn:row
被调用并且它不是一个 shift-tab 事件,它将表视图的属性设置回,NO
因此它仍然可以像往常一样进行编辑。
我在下面粘贴了完整的解决方案。
objective-c - 核心动画导致部分源列表焦点环
我ImageAndTextCell
在自定义NSOutlineView
. 对于那些不熟悉它的人,它是一个NSTextFieldCell
在单元格文本左侧绘制图像的子类。
我有一个像 iTunes 一样的源列表,其中包含组行和下面的项目。在编辑单元格的值时,焦点环仅绘制组的前两行的一部分(见下文)。聚焦环的顶部三分之一位于第一行,底部三分之一位于第二行。
随后的行画得很好(见下面的第三行),它们都有相同的图像。这可能是什么原因造成的?(请参阅下面的更新 3。核心动画导致此行为)
更新 1
我几乎注释掉了所有自定义代码ImageAndTextCell
,它没有任何区别(只有init
、dealloc
、copyWithZone
和image
getter 和 setter 仍然存在)。
更新 2
我几乎注释了NSOutlineView
子类和我的委托类中的所有代码,以及将更新 1 中的所有代码注释掉 - 仍然是奇怪的结果。第三行不再总是完美的,但是当我删除各种功能时,绘制的焦点矩形部分发生了变化。
此外,我遇到问题的项目在我的两个大纲组中的第二个。在重命名第一组中唯一的项目时,焦点矩形在每一步都很完美。具有讽刺意味的是,这是在我的应用程序的标准操作期间无法重命名的。
接下来,我将查看我在 NIB 中的所有设置,看看那里是否有问题。
更新 3
我可以通过对窗口中的每个视图全面禁用核心动画来修复它。现在的问题变成了:如何重新启用 Core Animation 而不会让我的焦点矩形看起来很糟糕?
cocoa - 如何自动选择插入到 NSOutlineView & Core Data 中的项目
我有一个NSTreeController
绑定NSArrayController
到一个实体的绑定和一个绑定到一个NSOutlineView
. 现在,当单击“添加”按钮时,我想向 中添加一个新实体treeController
,选择该实体,然后突出显示它以进行编辑。如果我调用[arrayController add]
,则插入是异步的,我无法知道新对象是哪个,因为大纲视图不会自动选择新行。所以我只能以编程方式插入新实体。所以addButton
调用createNewGroup
a outlineViewController
(见下文)。
同样,插入新实体似乎不是一个同步过程。我无法在NSOutlineView
之后的下一行中找到它currentObject = [NSEntityDescription...
。我在重新加载数据后确实尝试过。所以我只剩下观察数组控制器中的值变化了。这种工作,大部分时间,但偶尔不会。这是处理这类事情的正确方法吗?
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)
),使其无法更改整个大纲视图,但它经常在线程冲突和应用程序冻结时上升。
有什么想法可以解决选择消失的问题吗?
cocoa - NSSplitView 中的 NSOutlineView 徽章
我有一个 NSOutlineView,我使用 drawAtPoint:、NSAttributedString 和 NSBezierPath 在单元格的右侧绘制徽章编号。当在 NSSplitView 的子视图中调整大纲视图的大小时,我的问题存在。徽章随着调整大小向左或向右移动。当他们到达单元格本身的文本时,他们不会停止或截断它们下面的文本。它只是飞过来。
有没有办法让单元格识别它旁边的自定义绘制视图并相应地截断文本?我已经尝试过解决方案 PXSourceList,但这也无济于事。
nsoutlineview - 在 MonoMac 中使用 NSOutlineView 和 NSTreeController
任何人都有一个关于如何使用 MonoMac 使用 NSOutlineView 和 NSTreeController 绑定的示例?
在此先感谢,弗雷德里克
cocoa - NSOutlineView 的 noteNumberOfRowsChanged 不等同于 reloadData
我将另一个添加Object
到我NSOutlineView
的NSOutlineViewDataSource
并调用[myOutlineView noteNumberOfRowsChanged]
。如果我正确阅读了文档,这应该让 OutlineView 意识到我添加了一行并正确重绘了自己。但相反,什么也没有发生。
如果我称它为[myOutlineView reloadData]
有效,但根据文档reloadData
,开销比noteNumberOfRowsChanged
(因为它重新加载所有数据...... duh)要高得多
我没有使用绑定,我NSOutlineViewDataSource
自己提供。
有人知道我在做什么错吗?
cocoa - Mimic NSOutlineView with UIKit
I'm currently looking for a solution to mimic NSOutlineView with UIKit. The idea is to create a UITableView that displays a hierarchy similar to the list view in a typical Finder window. In other words, items can be expanded or not, and each item can contain children or not.
Since the hierarchy can be several levels deep, using only sections is not an option. The tricky part is to have a controller that efficiently manages the data source of the table view and knows what items are expanded and how many rows to collapse or expand when the user interacts with the table view.
I'm not asking for a ready-made solution, but I would appreciate pointers or advice to get this working in an efficient way.
cocoa - 在大纲视图中显示 NSXMLDocument 时如何设置 TreeController 的内容对象
我想在大纲视图中显示一个 NSXMLDocument。值得庆幸的是,苹果有一个名为“Using Tree Controllers With NSXML Objects”的文档。
但我没有得到的一件事是我如何设置 TreeController 的内容对象。
首先,我将“绑定到”设置为要显示的 NSXMLDocument,并将“模型键路径”设置为它的 rootElement。但这行不通。
我发现我必须将“绑定到”设置为具有 NSXMLDocument 作为其属性的对象,并将“模型键路径”设置为 NSXMLDocument.rootElement。
那为什么?
nsurl - 为什么 NSOutlineView 在我想在大纲视图中显示的 NSURL 对象上调用 -indexPath?
我有一个 NSOutlineView,我想用 NSURL 对象列表填充它。我在 NSTableView 中有这个工作。作为转向 NSOutlineView 的第一步(这样我可以根据用户的需要按各种标准对 NSURL 对象进行分组),我以一种应该模仿表格视图的方式实现了 NSOutlineViewDataSource 协议的最小方法:
这不断抛出一个无法识别的选择器异常,显示[NSURL indexPath]
正在被调用。任何人都知道为什么要调用此方法或如何解决它?