gpt4 book ai didi

objective-c - 在基于 View 的 NSOutlineView 中更改 NSTableCellView 的 objectValue 不会传播到数据源

转载 作者:太空狗 更新时间:2023-10-30 03:54:17 26 4
gpt4 key购买 nike

我使用基于 View 的 NSOutlineView 来显示和选择科学应用程序的层次结构项目。

view-based NSOutlineView

大纲列中的每一行代表一个项目,由项目特定的图标(图片中的所有图标都一样)、一个显示项目是否被选中的复选框以及项目的名称表示。我需要图标、复选框和名称出现在同一个单元格中,因此我使用的是基于 View 的 NSOutlineView

我已经实现了 NSOutlineViewDataSource 协议(protocol)来为大纲 View 提供数据。

outlineView:objectValueForTableColumn:byItem: 方法提供了一个自定义对象,该对象具有属性 BOOL selectedNSString *name

我在 IB 中的自定义表格单元格 View 组成如下:

view-based NSOutlineView in IB

我将复选框值绑定(bind)到 objectValue.selected 并将标签值绑定(bind)到 objectValue.name

如我所愿,大纲 View 很好地显示了 objectValue 提供的名称和选择状态。

但是,如果我更改复选框的状态,则不会在我的数据源中触发 NSOutlineViewDataSource 协议(protocol)中定义的方法 outlineView:setObjectValue:forTableColumn:byItem: 以提供新更改的对象值。请注意,如果我不对单元格使用自定义 View ,则此方法有效。

我通过将 NSLog 语句插入传递对象的 setSelected 方法来检查表格单元格 View 的 objectValue.selected 是否在单击复选框时实际发生更改作为 objectValueselected 成员正确地改变了状态。

如何将 objectValue 的更改传播回我的数据源模型?我已经检查了 NSOutlineView 的委托(delegate)方法,但找不到一种方法来表示单元格 View 的 objectValue 已被我的复选框更改(即单元格 View 已“结束编辑”)。我还遗漏了其他一些基本点吗?

最佳答案

setObjectValue 不适用于基于 View 的对象:

来自 header ::

/* View Based OutlineView: This method is not applicable.
*/
- (void)outlineView:(NSOutlineView *)outlineView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;

关于objective-c - 在基于 View 的 NSOutlineView 中更改 NSTableCellView 的 objectValue 不会传播到数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com