Xcode数组到NSTableView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode数组到NSTableView相关的知识,希望对你有一定的参考价值。
我做了一些搜索,一些编码,一些搜索,然后更多的编码。我只是不能让它自己工作。我想从我定义的数组中获取数据:
var allPublishers = [[String: String]]()
我将从外部API调用中填充数组。我可以每100个块调用一次刷新。这是人口:
for i in 0 ..< json["publishers"].count
let pname: String = String(describing: json["publishers"][i]["publisher"]["account_name"])
let pid: String = String(describing: json["publishers"][i]["publisher"]["publisher_id"])
self.allPublishers.append(["name": pname, "id": pid])
例如,在前100后我调用此函数:
self.showPublishers()
为了这些目的,现在只显示类型:
func showPublishers()
DispatchQueue.main.async
self.tableView.reloadData()
类型是:Array<Dictionary<String, String>>
部分填充的块的样本是:
[["id": "1100l6141", "name": "014loyalia"], ["id": "1101l11949", "name": "030magazin"]]
我有一个NSTableView设置的插座:
@IBOutlet weak var tableView: NSTableView!
哪个在我的Main.storyboard
:
除了ViewController.swift
插座之外,我对此还没有任何约束力。
当我执行程序时,TableView会更新行,但不会更新数组中的值:
这是我的tableView
功能:
extension ViewController:NSTableViewDataSource
func numberOfRows(in tableView: NSTableView) -> Int
return allPublishers.count
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?
return allPublishers[row][(tableColumn?.identifier.rawValue)!]
任何人都可以建议如何用NSTableView
的实际数据填充这个allPublishers
吗?
提前致谢!
强烈建议您不要使用基于单元格的表格视图。
Cocoa Bindings和基于视图的表视图非常容易实现。
- 宣布
allPublishers
为dynamic
@objc dynamic var allPublishers = [[String: String]]() // however a custom class is highly recommended.
- 在Interface Builder中
断开
datasource
将表格视图从Cell Based
更改为View Based
将表格视图的Content
绑定到ViewController > allPublishers
将第一列的Value
的Table View Cell
绑定到Table Cell View > objectValue.name
将第二列的Value
的Table View Cell
绑定到Table Cell View > objectValue.id
请注意表视图单元格和表单元格视图的细微但重要的区别
无需进一步的代码。
我通过改变一些事情来解决这个问题。首先,我将Table View
中的Main.storyboard
的“内容模式”从“基于视图”更改为“基于单元格”:
这消除了将单元格映射到UI中的参数的要求。然后,我更改了调用列的ViewController.swift
函数:
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?
if tableColumn == tableView.tableColumns[0]
return allPublishers[row]["name"]!
else if tableColumn == tableView.tableColumns[1]
return allPublishers[row]["id"]!
return nil
现在这就像一个魅力。
以上是关于Xcode数组到NSTableView的主要内容,如果未能解决你的问题,请参考以下文章
将选定的行复制到填充 Xcode 中另一个 UITableView 的数组