您好,感谢您的阅读。我正在尝试从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。希望这对其他人有帮助。