- Swift3.0 开发macOS应用程序(3) NSTableV
- Swift3.0 开发macOS应用程序(6) NSStatus
- Swift3.0 开发macOS应用程序(5) NSAlert
- Swift3.0 开发macOS应用程序(2) NSCollec
- Swift3.0 开发macOS应用程序(4) NSArrayC
- Swift3.0 开发macOS应用程序 (8): NSAnim
- Swift3.0 开发macOS应用程序 (10): 添加Doc
- 初学者的macOS开发:第一部分
- Swift3.0 开发macOS应用程序(1) 入门小实例
- Swift3.0 开发macOS应用程序 (11): 如何在St
A user interface object that displays data for a set of related records, with rows representing individual records and columns representing the attributes of those records.
以上是官方英文介绍,只可意会不好翻译出来。NSTableView的结构层次图如下:
![](https://img.haomeiwen.com/i2105518/516c2f9529554847.jpg)
由上图可以看出,NSTableView相对于UITableView要复杂很多,事实上层次结构相对确实复杂,下图是NSTableView在xib中的树状结构
![](https://img.haomeiwen.com/i2105518/94b11c31e159a28b.png)
我们要做的是给每个TableView的每一列TableColumn里的TableCellView下的TableViewCell添加数据。
1.打开StoryBoard
从右下角控件库中往ViewController视图控制器拖入一个NSTableView和NSButton,选择NSTableView连接DataSource,并进行约束。
![](https://img.haomeiwen.com/i2105518/c1165b684346e78b.png)
2.按“Command” + “N”,创建Person对象,并在Person.swift中添加代码,如下图所示:
![](https://img.haomeiwen.com/i2105518/3d786e0cc0670f16.png)
![](https://img.haomeiwen.com/i2105518/19e79fbd50c98cb8.png)
3.在ViewController.swift中,与StoryBoard里对应控件连线,并添加代码
import Cocoa
class ViewController: NSViewController ,NSTableViewDataSource{
//tableView
@IBOutlet weak var tableView: NSTableView!
let person = Person()
var data : [Person] = Array()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
//添加
@IBAction func add(_ sender: Any) {
data.append(person)
tableView.reloadData()
}
//MARK: NSTalbeViewDatasource
func numberOfRows(in tableView: NSTableView) -> Int {
return data.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return data[row]
}
}
4.此时运行程序发现点击Add按钮,出现的是这种界面
![](https://img.haomeiwen.com/i2105518/453fb6442aa781a9.png)
这并不是我们想要的结果。
5.绑定数据
打开StoryBoard,选择TableViewCell,点击Binding Inspector,如下图所示:
![](https://img.haomeiwen.com/i2105518/a54dbf1cf3ef7abd.png)
![](https://img.haomeiwen.com/i2105518/ab694b39780f2e99.png)
数据绑定结束后,运行程序。如下图所示:
![](https://img.haomeiwen.com/i2105518/ae2e7ab3e5c8aecc.gif)
数据完美显示。
源码-->:github
网友评论