【发布时间】:2017-09-17 18:14:35
【问题描述】:
================================================ ====================
class ViewController: NSViewController,NSTableViewDelegate, NSTableViewDataSource{
@IBOutlet weak var sidebarView: NSTableView!
func numberOfRows(in tableView: NSTableView) -> Int {
return 9
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
let tableCellView = tableView.make(withIdentifier: tableColumn!.identifier, owner: self) as? NSTableCellView
let str:String = (tableColumn?.identifier)!
if str == "SIDEBAR_ITEM" {
tableCellView!.textField?.stringValue = "test"
print(tableCellView!.textField?.stringValue)
}
return tableCellView
}
func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
//print("rowViewForRow")
return NSTableRowView(frame: NSRect(x: 0, y: 0, width: 100, height: 100))
}}
================================================ ====================
这有什么问题?那是任何错误配置吗?它总是显示“表格视图单元格”
【问题讨论】:
-
运行代码时,
str在objectValueFor方法中的实际值是多少? -
您知道协议
NSTableViewDelegate声明了一个方法tableView(_:viewFor:row:)以及何时应该实现它吗? (另外,您最好将代码显示为文本,而不是图像。) -
str的值与比较值“SIDEBAR_ITEM”相同,我也按照你的说法实现了tableView(_:viewFor:row:)方法,但它永远不会改变标题
-
objectValueFor的实现是错误的。通常你必须返回dataSourceArray[row]