在 NSTableView 中应用 NSCheckBox 状态
Applying NSCheckBox state in NSTableView
我有一个 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 内的复选框?
您需要创建一个自定义单元格视图并为复选框定义一个 IBOutlet。在 NSTableView
中添加自定义电池后,您可以连接插座。
要在 table 视图中添加自定义单元格,您可以添加普通 table 单元格视图,然后将其 class 设置为子 class。这使您可以访问您定义的出口。
然后您可以通过代码中的自定义单元格视图访问复选框 - 您可能想在 Apple 的 NSTableView 最佳示例之一中查找更多详细信息:developer.apple.com/library/mac/samplecode/TableViewPlayground/
此外,您可能还想查看此答案 逐步解释我上面描述的内容。
基本的 NSTableCellView 没有任何复选框。因此,该 cellView 实例的真实 class 必须以某种方式成为您自定义 NSTableCellView class 的实例。在那里,你应该有(或者如果你没有的话)对那个复选框的引用(可能是一个 NSButton )。
因此在您的代码中,您应该首先确保从 tableView.makeViewWithIdentifier(...
获得的实例是您的自定义 class 的实例。在您检索标志的位置,将您的 cellView 实例转换为自定义 class,访问复选按钮,并设置其状态。
我有一个 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 内的复选框?
您需要创建一个自定义单元格视图并为复选框定义一个 IBOutlet。在 NSTableView
中添加自定义电池后,您可以连接插座。
要在 table 视图中添加自定义单元格,您可以添加普通 table 单元格视图,然后将其 class 设置为子 class。这使您可以访问您定义的出口。
然后您可以通过代码中的自定义单元格视图访问复选框 - 您可能想在 Apple 的 NSTableView 最佳示例之一中查找更多详细信息:developer.apple.com/library/mac/samplecode/TableViewPlayground/
此外,您可能还想查看此答案
基本的 NSTableCellView 没有任何复选框。因此,该 cellView 实例的真实 class 必须以某种方式成为您自定义 NSTableCellView class 的实例。在那里,你应该有(或者如果你没有的话)对那个复选框的引用(可能是一个 NSButton )。
因此在您的代码中,您应该首先确保从 tableView.makeViewWithIdentifier(...
获得的实例是您的自定义 class 的实例。在您检索标志的位置,将您的 cellView 实例转换为自定义 class,访问复选按钮,并设置其状态。