我有一種感覺,這個表格單元顯示問題有一個簡單的答案,但是,我顯然需要比我更大的智慧來找到它。更新的NSTableCellView.textField在表格顯示中未更新。
這裏是我的教科書控制器,委託和表和視圖封閉DataSource類...
import Cocoa
class Table8020ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
var tokenText: [String] = ["alpha", "beta", "gamma", "delta", "epsilon", "zeta"]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfRowsInTableView(aTableView: NSTableView) -> Int {
println("numberOfRowsInTableView = \(tokenText.count)")
return tokenText.count
}
func tableView(aTableView: NSTableView, objectValueForTableColumn aTableColumn: NSTableColumn?, row rowIndex: Int) -> AnyObject? {
var result = aTableView.makeViewWithIdentifier(aTableColumn!.identifier, owner: self) as! NSTableCellView
println("textField in = \(result.textField!.stringValue)")
result.textField!.stringValue = tokenText[rowIndex]
println("textField out = \(result.textField!.stringValue)")
return result
}
}
我登錄這似乎工作正常更新到.textField。
numberOfRowsInTableView = 6
textField in = Table View Cell
textField out = alpha
textField in = Table View Cell
textField out = beta
textField in = Table View Cell
textField out = gamma
textField in = Table View Cell
textField out = delta
textField in = Table View Cell
textField out = epsilon
textField in = Table View Cell
textField out = zeta
但實際的表格顯示保留了原始的界面生成器值! '表格視圖單元'在'返回結果'之後似乎發生了一些神祕的事情。
我使用的是最新版本的Xcode 6.3(6D570)與雨燕V1.2
感謝您的提示和明確的回覆。問題已解決。現在反思我的困惑......爲什麼是強制性重要性的「客體價值」?我認爲這可能是任何對象,就像我在這裏的「字符串」示例一樣簡單,或者像「投資組合」那樣複雜。除了保留一個指向對象的指針之外,表格還不能做任何其他事情,或者可以嗎? – Rojer
在這個簡單的例子中,你不需要實現''tableView:objectValueForTableColumn:row:'' - 你可以刪除它,並且你的應用程序可以毫無問題地構建和運行。在更復雜的例子中,NSTableCellView的''objectValue''屬性更重要。我特別想到使用* bindings *填充表視圖的時候。如果你這樣做,你會發現所有的事情都可以通過* Interface Builder *來完成,而你在NSTableCellView上告訴控件的方式他們應該顯示的模型的部分是通過這個視圖的objectValue ''。 –
非常好。這一切都很合理。我非常感謝你對我日益增長的智慧的貢獻。 – Rojer