您好,感谢您的阅读。我正在尝试从People对象数组填充基于视图的NSTableView。在我的设置中,我使用带有两个xib文件的Storyboard(一个用于主tableview,另一个用于我的自定义视图)。

委托方法“ 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
}


我在viewController中的viewDidLoad()中注册了第二个笔尖

let nib = NSNib(nibNamed: "MyOView", bundle: NSBundle.mainBundle())
mainTableView.registerNib(nib!, forIdentifier: "MyOView")


任何帮助,将不胜感激 :)

谢谢

最佳答案

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

10-08 06:24