[英]macOS - How do I use checkbox in NSTableView?
我试图将复选框放在基于视图的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'
,正确的方法是什么?
很简单
在基于视图的NSTableView
您可以使用从NSView
继承的任何视图作为表单元格视图。 默认NSTableCellView
带有文本字段的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
NSTableCellView
拥有imageView
和一个textField
的出口。 您需要一个复选框,您可以添加一个。 子类化NSTableCellView
并添加出口“ checkBox”。 在IB中,更改单元格视图的类,将文本字段替换为复选框(或添加复选框),然后连接“ checkBox”插座。 在tableView(_:viewFor:row:)
,使用checkBox
代替textField
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.