【发布时间】:2016-10-13 22:08:15
【问题描述】:
我在让 NSTableView 与 Swift 3 和 XCode 8 一起工作时遇到问题。我有一个包含一个表和一列的应用程序,并尝试从 NSMutableArray 添加项目。这是我的代码:
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
var objects: NSMutableArray! = NSMutableArray()
override func viewDidLoad() {
super.viewDidLoad()
self.objects.add("one")
self.objects.add("two")
self.objects.add("three")
self.objects.add("four")
self.tableView.reloadData()
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int
{
return self.objects.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?
{
let cellView = tableView.make(withIdentifier: "cell", owner: self) as! NSTableCellView
cellView.textField!.stringValue = self.objects.object(at: row) as! String
return cellView
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
但是这给了我一个错误:
*** Illegal NSTableView data source (<NSView: 0x610000120820>). Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row
看起来这两种方法都已实现,所以我不知道为什么会出现此错误。 表视图的数据源和委托都设置为 man 视图。
【问题讨论】:
-
您是否将表格数据源设置为委托为自己?