2017-06-12 72 views
1

我正在構建MacOS應用程序。我試圖在按下添加按鈕時更新單元格的表格視圖。帶標識符的NSTableView單元不斷給零

enter image description here

以下是我的代碼:

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { 
    let identifier = tableColumn?.identifier as NSString? 
    if (identifier == "NameCell") 
    { 
     var result: NSTableCellView 
     let cell = tableView.make(withIdentifier: "NameCell", owner: self) as! NSTableCellView 
     cell.textField?.stringValue = self.data[row].setting! 
      return cell 

    } 
    else if (identifier == "SettingCell") 
    { 
     if let cell = tableView.make(withIdentifier: "SettingCell", owner: self) as? NSTableCellView { 
     cell.textField?.stringValue = self.data[row].setting! 
     return cell 
    } 
    } 
    return nil 
} 

然而,行讓電池= tableView.make(withIdentifier: 「NameCell」,店主:個體經營)作爲! NSTableCellView是持續失敗,因爲它返回零

致命錯誤:意外發現零而展開的可選值

NameCell是 enter image description here 誰能幫我找到一種方法來解決這個問題?

+0

我覺得標識符我應該給被對應NSTableColumn不NSTableCellView – user3284302

+0

是的,我認爲這些標識符應該是NSTableColumn的標識符。你能解釋如何確保tableView不是零(觀看插座)? – user3284302

+0

您是否更改了列和單元格視圖的標識符? – Willeke

回答

2

您應該在NSTableCellView中將「標識符」設置爲「NameCell」。而你的代碼應該簡化爲遵循,因爲該列的標識符不會永遠改變:在XCode的Interface Builder中

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { 
    var result: NSTableCellView 
    let cell = tableView.make(withIdentifier: "NameCell", owner: self) as! NSTableCellView 
    cell.textField?.stringValue = self.data[row].setting! 

    return cell 
} 

引用設置: enter image description here

+0

爲我工作,但我不得不使用'make(withIdentifier:NSUserInterfaceItemIdentifier(rawValue:「NameCell」),owner:self)' –