我有一些数据来自一个 JSON 文件,我已将其转换为:
var tempArray = [NSDictionary]()
以下是此数据的示例:
(
{
active = y;
"campaign_id" = "Sample ID 1";
description = "Sample Text";
"end_date_time" = "2017-10-01 00:00:00";
"on_expiry" = ignore;
"on_invalid_user" = reject;
"start_date_time" = "2017-07-01 00:00:00";
"voucher_code" = SAMPLEON1;
"voucher_code_id" = "Sample ID 4";
},
{
active = y;
"campaign_id" = "Sample ID 2";
description = "Sample Text";
"end_date_time" = "2017-10-01 00:00:00";
"on_expiry" = ignore;
"on_invalid_user" = reject;
"start_date_time" = "2017-06-02 00:00:00";
"voucher_code" = SAMPLEOFF1;
"voucher_code_id" = "Sample ID 5";
}
)
我设置了一个 NSTableView 插座,它有与上面字典相关的标识符的列:
@IBOutlet var voucherTableView: NSTableView!
一旦我voucherTableView.reloadData();
在我的控制器中运行代码,表格就会填充正确数量的行,但列中的数据都是一样的:
这是我的tableView
功能:
private func tableView(tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let cellView = voucherTableView.make(withIdentifier: "cell", owner: self) as! NSTableCellView
cellView.textField!.stringValue = self.values.object(at: row) as! String
return cellView
}
有没有人对如何在 reload 命令中将数据从我的 Array 获取到 tableView 有任何见解?
我建议使用 Cocoa Bindings
datasource
Interface Builder 中的表视图连接到目标类实现这两个方法(viewForColumn:row
不需要)
func numberOfRows(in tableView: NSTableView) -> Int
{
return tempArray.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?
{
return tempArray[row]
}
在 Interface Builder Bindings Inspector 中value
,将文本字段的绑定到Table Cell View > objectValue.[property]
例如
注意:强烈建议将字典映射到自定义类(class
继承NSObject
自是强制性的)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句