gpt4 book ai didi

cocoa - 更新的 NSTableCellView.textField 未在表格显示中更新。

转载 作者:行者123 更新时间:2023-12-03 16:25:06 24 4
gpt4 key购买 nike

我感觉这个表格单元格显示问题有一个简单的答案,但是,我显然需要比我更大的智慧才能找到它。

这是我的教科书 Controller 、表格和封闭 View 的委托(delegate)和数据源类...

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

但实际的表格显示保留了原始界面生成器值! “ TableView 单元格” 在“返回结果”之后似乎发生了一些神秘的事情。

我正在使用最新的 Xcode 版本 6.3 (6D570) 和 Swift V1.2

最佳答案

你犯了一些错误。

首先,您从 tableView:objectValueForTableColumn:row 返回了错误类型的值。此方法并不请求 View 实例,而是请求 View 实例将表示的对象。换句话说,它想知道 View 将显示什么模型对象。在每种情况下,您的模型对象都非常简单 - 它是 tokenText 数组中的字符串之一。

func tableView(tableView: NSTableView,
objectValueForTableColumn tableColumn: NSTableColumn?,
row: Int) -> AnyObject? {
return tokenText[row]
}

其次,您未能实现tableView:viewForTableColumn:row:。您可以在此处为表中的每个单元格创建 View ,并告诉该 View 要显示模型对象的哪些位。在每种情况下,您的模型对象只是一个字符串,因此您实际上是告诉 View 在其 textField 中显示整个模型对象:

func tableView(tableView: NSTableView,
viewForTableColumn tableColumn: NSTableColumn?,
row: Int) -> NSView? {

var view = tableView.makeViewWithIdentifier(tableColumn!.identifier,
owner: self) as! NSTableCellView
view.textField!.stringValue = tokenText[row]

return view
}

关于cocoa - 更新的 NSTableCellView.textField 未在表格显示中更新。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com