gpt4 book ai didi

cocoa - 为什么 makeViewWithIdentifier :owner: return different types sporadically?

转载 作者:行者123 更新时间:2023-12-03 17:10:54 37 4
gpt4 key购买 nike

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

委托(delegate)方法“tableView viewForTableColumn row”中对 makeViewWithIdentifier:owner: 的调用正在返回不同的类型,没有明显的原因。有时,当我编译时,它返回类型为“MyOView”的对象(请参见控制台输出 1),这是我的自定义 View 类,而其他时候,当我编译时(尽管我的代码实际上没有变化),它会返回 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")

如有任何帮助,我们将不胜感激:)

谢谢

最佳答案

经过进一步挖掘,我意识到我没有将我的自定义单元命名为 Xib。希望这对其他人有帮助。

关于cocoa - 为什么 makeViewWithIdentifier :owner: return different types sporadically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29649464/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com