如何将自定义 table 单元格视图添加到 NSTableView 中?
How to get custom table cell views into NSTableView?
我有一个主要使用标准 NSTextTableCellView
的 NSTableView
,但我想要一些其他单元格在我的 table 中的一两行中包含另一个 UI 组件.问题是:我在哪里定义这些自定义单元格以便 Cocoa 找到它们?
我刚刚将自定义 NSTableCellView
放入我的 XIB(与 table 相同的 XIB)并给它一个标识符。但是然后使用这段代码显然找不到单元格...
func tableView(tableView:NSTableView, viewForTableColumn tableColumn:NSTableColumn?, row:Int) -> NSView?
{
var view:NSTableCellView?;
if (tableColumn?.identifier == "labelColumn")
{
view = tableView.makeViewWithIdentifier("labelCell", owner: nil) as? NSTableCellView;
view!.textField?.stringValue = _formLabels[row];
}
else if (tableColumn?.identifier == "valueColumn")
{
if (row == 1)
{
view = tableView.makeViewWithIdentifier("customCell", owner: nil) as? NSTableCellView;
println("\(view)"); // nil - Not found!
}
else
{
view = tableView.makeViewWithIdentifier("valueCell", owner: nil) as? NSTableCellView;
view!.textField?.stringValue = _formValues[row];
}
}
return view;
}
一切正常,但将找不到 ID 为 customCell
的单元格。我如何告诉 Cocoa 找到它?
您需要将新的单元格视图拖放到 table 列中,该列将包含那种单元格视图(在本例中其标识符为 "valueColumn")。
我有一个主要使用标准 NSTextTableCellView
的 NSTableView
,但我想要一些其他单元格在我的 table 中的一两行中包含另一个 UI 组件.问题是:我在哪里定义这些自定义单元格以便 Cocoa 找到它们?
我刚刚将自定义 NSTableCellView
放入我的 XIB(与 table 相同的 XIB)并给它一个标识符。但是然后使用这段代码显然找不到单元格...
func tableView(tableView:NSTableView, viewForTableColumn tableColumn:NSTableColumn?, row:Int) -> NSView?
{
var view:NSTableCellView?;
if (tableColumn?.identifier == "labelColumn")
{
view = tableView.makeViewWithIdentifier("labelCell", owner: nil) as? NSTableCellView;
view!.textField?.stringValue = _formLabels[row];
}
else if (tableColumn?.identifier == "valueColumn")
{
if (row == 1)
{
view = tableView.makeViewWithIdentifier("customCell", owner: nil) as? NSTableCellView;
println("\(view)"); // nil - Not found!
}
else
{
view = tableView.makeViewWithIdentifier("valueCell", owner: nil) as? NSTableCellView;
view!.textField?.stringValue = _formValues[row];
}
}
return view;
}
一切正常,但将找不到 ID 为 customCell
的单元格。我如何告诉 Cocoa 找到它?
您需要将新的单元格视图拖放到 table 列中,该列将包含那种单元格视图(在本例中其标识符为 "valueColumn")。