您好,感谢您的阅读。我试图从一组People对象填充基于NSTableView的视图。在我的设置中,我使用的Storyboard有两个xib文件(一个用于主tableview,另一个用于我的自定义视图)。
调用makeViewWithIdentifier:owner:在委托方法“tableView viewForTableColumn row”中返回不同的类型,没有明显的原因。有时当我编译它时返回类型为“MyOView”的对象(参见控制台输出1),这是我的自定义视图类,而有时我编译时(尽管我的代码没有任何变化)它返回NSTextField(参见控制台输出2)< / p>
为什么会这样?
控制台输出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
}
在viewDid的ViewDtroller中,我注册了第二个笔尖
let nib = NSNib(nibNamed: "MyOView", bundle: NSBundle.mainBundle())
mainTableView.registerNib(nib!, forIdentifier: "MyOView")
任何帮助将不胜感激:)
感谢
答案 0 :(得分:1)
经过多次挖掘,我意识到我没有命名我的自定义单元格Xib。希望这对其他人有帮助。