Swift 开发 Mac OS X 应用时如何显示一个列表?

Joker_Qyou
  • 26

想要实现的效果是:在应用运行之后显示一个没有表头的表格,显示一些测试数据。表格只有一列,是 cell based table view。
ViewController.swift 代码如下:

import Cocoa

class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {

    @IBOutlet weak var table_view: NSTableView!

    func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {
        var content = getData()[row];
        println("\(row): \(content)");
        return content;
    }

    func numberOfRowsInTableView(tableView: NSTableView) -> Int {
        return getData().count;
    }

    func getData() -> Array <String> {
        return [
            "Line 1",
            "Line 2",
            "Line 3",
        ];
    }

    override func viewDidLoad() {
        super.viewDidLoad();

        // Do any additional setup after loading the view.
        table_view.setDelegate(self);
        table_view.setDataSource(self);
    }

    override func viewDidAppear() {
        super.viewDidAppear();
        self.view.window!.title = "Reth0 App";
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }

}

Main.storyboard 中已经设置好界面。但是运行后表格中只有三个空的行,并没有 getData 返回的测试数据(如图)。
test result screenshot
如果修改 getData 返回的数组长度,行的数量也相应变化,但无一例外,都不显示内容。
通过运行后的终端输出,可以知道 tableView 方法确实被调用了 getData().count 次,而且每次都有输出。
求教,表格出现这样的行为是怎么回事?如何才能正常显示测试数据?

回复
阅读 6.9k
1 个回答

好吧,原来并不是 TableView 里有 Cell 就是 cell based,而是要在控件属性里设置 Content ModeCell Based。已解决。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏