tableView(_:objectValueFor:row:) 的用途
Purpose of tableView(_:objectValueFor:row:)
The documentation for the NSTableViewDataSource protocol 说
This method is mandatory
如果您创建一个新的 NSTableViewDataSource,编译器会要求您提供此方法以及 numberOfRows(in tableView: NSTableView)
。
到目前为止,还不错。如果你提供它,它会立即为每一行调用一次......但是如果你删除它,table 似乎和没有它一样工作。在基于视图的 table 中似乎与此方法完全没有联系:在 NSTableViewDelegate 的 tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)
方法中,我 return 基于我的数据源的内容数组的新视图,如果我将一堆无意义的数据粘贴到 objectValueFor: row
中(直到并包括 returning 相同的字符串 - 我的 table 对象不是字符串)没有任何效果,因为我正在设置viewFor tableColumn:
中我的 NSTableViewCells 的值。
如果我通过直接从数据源检索相应的值来处理选择更改(以及我想对对象执行的任何操作)(例如)
func tableViewSelectionDidChange(_ notification: Notification) {
print(dataSource.allItems[tableView.selectedRow])
}
有没有理由实施这个方法?我看不到任何实际使用该对象的地方,感觉就像是基于单元格的 tables 的人工制品。
我不想因为遗漏一个必要的方法而破坏我的代码,但是由于我即将尝试使用自定义数据源进行一些奇怪而美妙的事情,我也不想让我的代码过于复杂被调用的方法,但其结果似乎完全没有意义。
如果单元格视图响应setObjectValue:
,那么table视图调用该方法并传入获得的行的对象值来自 tableView(_:objectValueFor:row:)
.
NSTableCellView
确实响应该方法并且是一个常见的单元格视图 class。 NSTextField
也是;它实际上继承自 NSControl
.
在您的情况下,您的单元格视图要么没有 objectValue
属性,要么更可能的是,您只是没有使用它。
一个常见的配置是使用 NSTableCellView
作为单元格视图,然后使用绑定将子视图绑定到通过其 objectValue
属性.
的关键路径
The documentation for the NSTableViewDataSource protocol 说
This method is mandatory
如果您创建一个新的 NSTableViewDataSource,编译器会要求您提供此方法以及 numberOfRows(in tableView: NSTableView)
。
到目前为止,还不错。如果你提供它,它会立即为每一行调用一次......但是如果你删除它,table 似乎和没有它一样工作。在基于视图的 table 中似乎与此方法完全没有联系:在 NSTableViewDelegate 的 tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)
方法中,我 return 基于我的数据源的内容数组的新视图,如果我将一堆无意义的数据粘贴到 objectValueFor: row
中(直到并包括 returning 相同的字符串 - 我的 table 对象不是字符串)没有任何效果,因为我正在设置viewFor tableColumn:
中我的 NSTableViewCells 的值。
如果我通过直接从数据源检索相应的值来处理选择更改(以及我想对对象执行的任何操作)(例如)
func tableViewSelectionDidChange(_ notification: Notification) {
print(dataSource.allItems[tableView.selectedRow])
}
有没有理由实施这个方法?我看不到任何实际使用该对象的地方,感觉就像是基于单元格的 tables 的人工制品。
我不想因为遗漏一个必要的方法而破坏我的代码,但是由于我即将尝试使用自定义数据源进行一些奇怪而美妙的事情,我也不想让我的代码过于复杂被调用的方法,但其结果似乎完全没有意义。
如果单元格视图响应setObjectValue:
,那么table视图调用该方法并传入获得的行的对象值来自 tableView(_:objectValueFor:row:)
.
NSTableCellView
确实响应该方法并且是一个常见的单元格视图 class。 NSTextField
也是;它实际上继承自 NSControl
.
在您的情况下,您的单元格视图要么没有 objectValue
属性,要么更可能的是,您只是没有使用它。
一个常见的配置是使用 NSTableCellView
作为单元格视图,然后使用绑定将子视图绑定到通过其 objectValue
属性.