2015-06-14 119 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」)的表列中刪除新的單元格視圖。

相關問題