TableView不呈现数据

时间:2016-12-10 13:47:16

标签: swift cocoa macos-sierra

以下是代码:

import Cocoa

class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {

    let data = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [1, 2, 3, 4],
        [5, 6, 7, 8],
    ]

    @IBOutlet weak var tbl: NSTableView!
    override func viewDidLoad() {
        print("init")
        super.viewDidLoad()
        tbl.delegate = self
        tbl.dataSource = self
        tbl.target = self
        tbl.reloadData()
        print("end init")
    }

    override var representedObject: Any? {
        didSet {
            tbl.reloadData()
        }
    }

    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        if let cell = tbl.make(withIdentifier: tableColumn!.identifier, owner: nil) as? NSTableCellView {
            if let col = Int(tableColumn!.identifier) {
                print("col id: ", tableColumn!.identifier)
                print(row, col)
                cell.textField?.stringValue = String(data[row][col])
                return cell
            }
        }
        return nil
    }

    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
        if let col = tableColumn {
            if let colIndex = Int(col.identifier) {
                print(data[row][colIndex])
                return data[row][colIndex] as Any
            }
        }
        return nil
    }

    func numberOfRows(in tableView: NSTableView) -> Int {
        return data.count
    }
}

我只是尝试将矩阵加载到表视图中,但是当应用程序运行时它是空白的。这里出了什么问题? 从调试信息来看,函数tableView从未被调用过。

1 个答案:

答案 0 :(得分:2)

我看到你设置tableView的委托,但我不知道你在哪里设置tableView的数据源。