2015-06-14 122 views
0

我有一个NSTableView,主要使用标准NSTextTableCellView s,但我想要一些其他单元格包含我的表中的一个或两个行中的另一个UI组件。问题是:我在哪里定义这些自定义单元格,以便Cocoa找到它们?如何将自定义表格单元格视图导入NSTableView?

我刚刚将一个自定义NSTableCellView放入我的XIB(与表中的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细胞不会被发现。我如何告诉可可找到它?

+0

你把它放在哪里?你应该把它放在可能包含这种单元格视图的表格列中(在这种情况下,它的标识符是“valueColumn”)。 –

+0

有意义,毕竟tableView.makeViewWithIdentifier()是表视图的一种方法。起初,我在XIB中松散地放置了它。将它放在表格视图列中确实有效。虽然我记得Xcode在之前在第一个表列中试过这个不支持的警告时抱怨过。 – BadmintonCat

+0

我不确定警告可能是什么,但它肯定是支持和正确的方法。例如,如果从对象库中拖动源列表,则会在列中获得包含两个单元视图的大纲视图(一个用于组行,一个用于普通行)。 –

回答

1

您需要在包含该类单元格视图(本例中标识符为“valueColumn”)的表列中删除新的单元格视图。

相关问题