我有一个NSTableView有两行,一行带有复选框,一行带有文本字段,我想在NSTableViewDataSource.viewForTableColumn中应用字典中的复选框状态......
// MARK: - NSTableViewDataSource
func tableView(tableView:NSTableView, viewForTableColumn tableColumn:NSTableColumn?, row:Int) -> NSView?
{
var cellView:NSTableCellView = tableView.makeViewWithIdentifier(tableColumn!.identifier, owner: self) as! NSTableCellView;
if (tableColumn!.identifier == "CheckColumn")
{
if let themeFlags = getThemeFlagsForCurrentNameType()
{
// themeFlags is of type [String:Bool]
let a = Array(themeFlags);
let flag:Bool = a[row].1;
// How to proceed here?
}
}
else if (tableColumn!.identifier == "NameColumn")
{
if let d = _themesTableViewData
{
let theme = Array(d.keys)[row];
cellView.textField!.stringValue = theme;
return cellView;
}
}
return cellView;
}
我遇到的困难是如何将Bool标志设置为包含在cellView中的复选框?
答案 0 :(得分:2)
您需要创建自定义单元格视图并为复选框定义IBOutlet。在NSTableView
中添加自定义单元格后,您可以连接插座。
要在表视图中添加自定义单元格,可以添加普通表格单元格视图,然后将其类设置为子类。这使您可以访问已定义的插座。
然后,您可以通过代码中的自定义单元格视图访问该复选框 - 您可能希望在Apple的NSTableView上找到更多详细信息:developer.apple.com/library/mac/samplecode/TableViewPlayground/
另外,您可能需要另外检查此答案Create a custom cell in a NSTableView,然后按照上述步骤进行解释。
答案 1 :(得分:1)
基本的NSTableCellView没有任何复选框。因此,该cellView实例的真实类必须以某种方式定制您的自定义NSTableCellView类。在那里,你应该(或者如果你不这样做)对这个复选框的引用(可能是NSButton)。
因此,在您的代码中,您应该首先确保从tableView.makeViewWithIdentifier(...
获得的实例是您的自定义类的实例。在您检索标志的位置,将您的cellView实例转换为自定义类,访问检查按钮并设置其状态。