我正在尝试将复选框放到基于视图的tableView的第一列。我将一个复选框按钮拖到列上,然后结构就像
Table View
First Column
Check
Check
Text Cell
然后在视图控制器的tableView
方法中我正在做
if identifier == "Check" {
let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Check"), owner: self) as! NSTableCellView
return cell
}
我遇到运行时错误Could not cast value of type 'NSButton' to 'NSTableCellView'
,这样做的正确方法是什么?
答案 0 :(得分:1)
非常简单。
在基于NSTableView
的视图中,您可以使用任何继承自NSView
的视图作为表格单元格视图。默认值为NSTableCellView
,带有文本字段,但也可以使用控件对象,例如NSTextField
或NSButton
,无需任何基础自定义视图将它们拖到表视图画布中。
发生错误是因为您必须将创建的视图强制转换为正确的类型。如果您使用复选框,则将视图投射到NSButton
。
不要以单元格来思考,请考虑查看。我甚至建议将变量命名为view
而不是cell
。
NSUserInterfaceItemIdentifier
扩展名是定义常量的推荐模式
extension NSUserInterfaceItemIdentifier {
static let check = NSUserInterfaceItemIdentifier(rawValue: "Check")
}
let view = tableView.makeView(withIdentifier: .check, owner: self) as! NSButton
答案 1 :(得分:0)
NSTableCellView
有一个imageView
和一个textField
出口。你需要一个复选框,你可以添加一个。子类NSTableCellView
并添加一个插座'checkBox'。在IB中,更改单元格视图的类,用复选框替换文本字段(或添加复选框)并连接“checkBox”插座。在tableView(_:viewFor:row:)
中,使用checkBox
代替textField
。