美文网首页iOS之MAC端开发iOS开发iOS Developer
Swift3.0 开发macOS应用程序(3) NSTableV

Swift3.0 开发macOS应用程序(3) NSTableV

作者: MNode | 来源:发表于2016-12-01 10:45 被阅读454次

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的结构层次图如下:


0.jpg

由上图可以看出,NSTableView相对于UITableView要复杂很多,事实上层次结构相对确实复杂,下图是NSTableView在xib中的树状结构

1.png

我们要做的是给每个TableView的每一列TableColumn里的TableCellView下的TableViewCell添加数据。

1.打开StoryBoard

从右下角控件库中往ViewController视图控制器拖入一个NSTableView和NSButton,选择NSTableView连接DataSource,并进行约束。

2.png
2.按“Command” + “N”,创建Person对象,并在Person.swift中添加代码,如下图所示:
3.png 4.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按钮,出现的是这种界面
5.png

这并不是我们想要的结果。

5.绑定数据

打开StoryBoard,选择TableViewCell,点击Binding Inspector,如下图所示:

6.png 7.png

数据绑定结束后,运行程序。如下图所示:

9.gif

数据完美显示。

源码-->:github

相关文章

网友评论

  • L桔F:不知道是哪里出错了?[NSTableViewDemo.Person copyWithZone:]: unrecognized selector sent to instance 0x600000040840

本文标题:Swift3.0 开发macOS应用程序(3) NSTableV

本文链接:https://www.haomeiwen.com/subject/hqdxmttx.html