objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource

objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource,第1张

概述我使用基于视图的NSOutlineView来显示和选择科学应用程序的分层结构项. 大纲列中的每一行代表一个项目,由项目特定图标表示(图片中全部相同),一个复选框,显示项目是否被选中,以及项目名称.我需要图标,复选框和名称出现在同一个单元格中,因此我使用的是基于视图的NSOutlineView. 我已经实现了NSOutlineViewDataSource协议来为大纲视图提供数据. 方法outline 我使用基于视图的NSOutlineVIEw来显示和选择科学应用程序的分层结构项.

大纲列中的每一行代表一个项目,由项目特定图标表示(图片中全部相同),一个复选框,显示项目是否被选中,以及项目名称.我需要图标,复选框和名称出现在同一个单元格中,因此我使用的是基于视图的NSOutlineVIEw.

我已经实现了NSOutlineVIEwDataSource协议来为大纲视图提供数据.

方法outlineVIEw:objectValueFortableColumn:byItem:提供一个自定义对象,该对象具有选中的BOol属性和Nsstring * name.

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

我将复选框值绑定到objectValue.selected,将标签值绑定到objectValue.name.

正如我所希望的那样,大纲视图很好地显示了objectValue提供的名称和选择状态.

但是,如果我更改复选框的状态,则在我的dataSource中不会触发在NSOutlineVIEwDataSource协议中定义的方法outlineVIEw:setobjectValue:fortableColumn:byItem:以提供新更改的对象值.请注意,如果我不使用单元格的自定义视图,则此方法有效.

通过将NSLog语句插入到作为objectValue传递的对象的setSelected方法中,单击复选框,检查表单元格视图的objectValue.selected是否实际更改.所选成员正确更改状态.

如何将objectValue的更改传播回我的dataSource模型?我已经检查了NSOutlineVIEw的委托方法,但找不到通过我的复选框发信号通知单元格视图的objectValue的方法(即单元格视图已“结束编辑”).我还缺少其他一些基本观点吗?

解决方法 setobjectValue不适用于基于视图的:

来自标题::

/* VIEw Based OutlineVIEw: This method is not applicable. */- (voID)outlineVIEw:(NSOutlineVIEw *)outlineVIEw setobjectValue:(ID)object fortableColumn:(NStableColumn *)tableColumn byItem:(ID)item;
总结

以上是内存溢出为你收集整理的objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource全部内容,希望文章能够帮你解决objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1010072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存