繁体   English   中英

macOS-如何使用NSTableView中的复选框?

[英]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 ,但是也可以通过将NSTextFieldNSButton类的控件对象拖到表格视图画布中来使用它们, 而无需任何基础自定义视图。

发生错误是因为您必须将创建的视图强制转换为正确的类型。 如果使用复选框,则将视图投射到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM