为什么makeViewWithIdentifier:owner:零星地返回不同的类型?

时间:2015-04-15 11:50:31

标签: cocoa nstableview nsview

您好,感谢您的阅读。我试图从一组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")

任何帮助将不胜感激:)

感谢

1 个答案:

答案 0 :(得分:1)

经过多次挖掘,我意识到我没有命名我的自定义单元格Xib。希望这对其他人有帮助。