2016-12-17 55 views
0

我有一張表,當我創建一些帶有更改文本的行時,它不會顯示在應用程序中。NSTableView中的NSTextField不更新它的值

var items : [String] = [] 

override func viewDidLoad() { 

    super.viewDidLoad() 
    items.append("Apples") 
    items.append("Oranges") 

    tableView.reloadData() 

} 

func numberOfRows(in tableView: NSTableView) -> Int { 

    return items.count 

} 

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?{ 

    let result : NSTableCellView = tableView.make(withIdentifier: tableColumn!.identifier, owner: self) as! NSTableCellView 

    print(tableColumn?.title) 
    result.textField?.stringValue = items[row] 
    print(result.textField?.cell?.title) 

    return result 

} 

}

在控制檯它看起來不錯,但它表明先前的值

enter image description here

enter image description here

默認情況下,日誌欄的文本框= 1個日期= 2

+0

我沒有看到結果文本字段或任何與表視圖之間的關係。這應該是基於視圖的表格視圖嗎? –

+0

'let result:NSTableCellView = tableView.make(withIdentifier:tableColumn!.identifier,owner:self)as! NSTableCellView' – osadchi

+0

@ElTomato,結果=列中有新行。它包含文本字段,如果我設置了新的stringValue並打印出來,它會顯示新的值,但在表中顯示的是前一個。 – osadchi

回答

1

我去它。我已經將類型更改爲基於單元格的tableView函數。

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? { 

    return items[row] 

}