【发布时间】:2015-04-15 11:50:31
【问题描述】:
您好,感谢您的阅读。我正在尝试从 People 对象数组中填充基于视图的 NSTableView。在我的设置中,我使用 Storyboards 和两个 xib 文件(一个用于主表视图,另一个用于我的自定义视图)。
在委托方法“tableView viewForTableColumn row”中对 makeViewWithIdentifier:owner: 的调用返回了不同的类型,没有明显的原因。有时当我编译时它返回类型为“MyOView”的对象(参见控制台输出 1),这是我的自定义视图类,而其他时候当我编译时(尽管我的代码实际上没有变化)它返回 NSTextField(参见控制台输出 2)
为什么会这样?
控制台输出 1: 单元的类名是:Saddle.MyOView 单元格的类名是:Saddle.MyOView
控制台输出 2: 无法将“NSTextField”(0x7fff7e1bbf40)类型的值转换为“Saddle.MyOView”(0x100017980)。 (lldb)
这是我对 tableView viewForTableColumn Row 的实现...
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
let cell = tableView.makeViewWithIdentifier("MyOView", owner: self) as! MyOView
println("class name of cell is: " + cell.className)
let person : Person = allPeopleInRace[row]
cell.itemNumber.stringValue = person.number.description
cell.itemName.stringValue = person.name
return cell
}
在 viewDidLoad() 的 ViewController 中,我已经注册了第二个 nib
let nib = NSNib(nibNamed: "MyOView", bundle: NSBundle.mainBundle())
mainTableView.registerNib(nib!, forIdentifier: "MyOView")
任何帮助将不胜感激:)
谢谢
【问题讨论】:
标签: cocoa nstableview nsview