我有一个带有两列的NSTableView,一列带有不可编辑的NSTextField,另一列带有可编辑的列。每个单元格都有一个不同的标识符(第一列为“Camera”,另一列为“Position”)。
我对第一列的单元格没有任何问题,但是,当尝试访问其可编辑的NSTextField时,第二列(“位置”)找到nil。我试过只使用一个标识符。在viewForTableColumn的开头声明它,以及其他一些东西,但它一直缺少NSTextField。什么想法可能会出错?
我的代码:
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
if tableColumn?.identifier == "Column0" {
let cell = tableView.makeViewWithIdentifier("Camera", owner: nil) as? NSTableCellView
cell?.textField?.stringValue = Array(cameraOrder.keys)[row]
return cell
} else {
let cell = tableView.makeViewWithIdentifier("Position", owner: nil) as? NSTableCellView
cell!.textField!.stringValue = String(Array(cameraOrder.values)[row]) //THIS ONE IS FINDING NIL
return cell
}
}
我的观点:
答案 0 :(得分:-1)
我找到了这样做的方法,虽然我不知道它是否是最佳的:
似乎有两个textFields出于某种原因使我的代码崩溃。我只使用第一列的标识符(“Camera”)并修改其标签以满足我的需要。最终发生的事情是,第一个文本字段的实例是在我的第二个列单元格中创建的,但它具有我需要的属性。
let cell = tableView.makeViewWithIdentifier("Camera", owner: nil) as? NSTableCellView
//...SET UP OF FIRST COLUMN, AND THEN WITHOUT CHANGING IDENTIFIERS..//
cell?.textField?.delegate = self
cell?.textField!.placeholderString = "Position Here"
cell!.textField!.editable = true
cell!.textField!.stringValue = String(Array(cameraOrder.values)[row])
return cell