gpt4 book ai didi

macos - 我真的需要实现outlineView(_ :objectForValue:byItem:)? 如何实现?

转载 作者:行者123 更新时间:2023-12-03 17:37:39 26 4
gpt4 key购买 nike

我想使用 Cocoa 绑定(bind)来实现大纲 View 。

我查看了this tutorial其中有一些,但没有一个使用数据源方法

optional func outlineView(_ outlineView: NSOutlineView, 
objectValueFor tableColumn: NSTableColumn?,
byItem item: Any?) -> Any?

但是,Apple 的 documentation状态:

While this method is marked as @optional in the protocol, you must implement this method if you are not providing the data for the outline view using Cocoa bindings.

对于教程来说,如果没有该方法,它似乎也可以工作。 但是它有什么用处以及应该如何使用它?

(令我困惑的是,它读起来像是应该返回一个数据对象,但它传递了一个 item 参数作为输入,其中 是一个数据对象我的理解。)

最佳答案

NSTableView/NSOutlineView而且它的文档一团糟。

byItem outlineView(_:objectForValue:byItem:)的参数是行代表的对象,返回值是单元格代表的对象。比较 tableView(_:objectValueFor:row:)返回值为

An item in the data source in the specified table column of the view.

另请参阅the objectValue property of NSTableCellView

The object that represents the cell data.

The objectValue is automatically set by the table when using bindings or is the object returned by the NSTableViewDataSource protocol method tableView(_:objectValueFor:row:).

实际上在绑定(bind)表格 View 内容时,objectValue是行对象。

NSOutlineView.h 说 outlineView(_:objectValueFor:byItem:) :

NOTE: this method is optional for the View Based OutlineView.

苹果的文档

While this method is marked as @optional in the protocol, you must implement this method if you are not providing the data for the outline view using Cocoa bindings.

仅对基于单元格的大纲 View 有效。

如果您在outlineView(_:viewFor:item:)中的单元格中设置控件的值那么你不必实现 outlineView(_:objectValueFor:byItem:) .

实现outlineView(_:objectValueFor:byItem:)如果您想使用objectValue单元格 View 的属性。例如,当绑定(bind)单元格中控件的值而不绑定(bind)大纲 View 的内容时。

另请参阅Populating a Table View Programmatically

关于macos - 我真的需要实现outlineView(_ :objectForValue:byItem:)? 如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55557440/

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