如何将tableview数据源和委托添加到单独的类/对象?

时间:2014-11-27 20:40:55

标签: xcode macos cocoa swift

我正在尝试学习如何使用SWIFT制作原生MacOS X应用程序。我目前没有使用Objective-C甚至Xcode的背景。

我实现了一个简单的应用程序,它可以回答一些按钮点击并修改一些标签。现在,我想把一些东西放在一张桌子里。我在我的UI上放了一个NSTableView,并发现我必须实现一个为NSTableViewDelegate和NSTableViewDataSource协议提供实现的类。

我认为,在代码组织和可读性方面,将所有内容都放在主AppDelegate的单独模块中控制我的TableView会更清晰。无论如何,到目前为止我看到的任何教程都只专注于如何实现协议并将它们全部放在AppDelegate类中。

我已经创建了一个新的SWIFT文件并将临时的以下代码放在其中:

import Foundation
import Cocoa


class LogTableController: NSObject, NSTableViewDelegate, NSTableViewDataSource {

    @IBOutlet var tableView: NSTableView!
    var logTableData:[NSDictionary] = []

    func numberOfRowsInTableView (tableView: NSTableView!) -> Int {
        return 0
    }

    func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn!, row rowIndex: Int) -> AnyObject! {
        return "Hello"
    }
}

但我无法找到如何继续在我的TableView和我的自定义类或该类的实例之间创建插座。没有什么可以让我在InterfaceBuilder中做到这一点。

我认为我遗漏了一些东西,任何关于如何组织我的代码以便不将所有内容都放在AppDelegate类中的答案将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

在Interface Builder中,您需要将对象库中的对象添加到文档大纲中,然后将其类设置为自定义类。然后,您可以将委托和数据源连接到该对象。