【问题标题】:Why does makeViewWithIdentifier:owner: return different types sporadically?为什么 makeViewWithIdentifier:owner: 偶尔会返回不同的类型?
【发布时间】:2015-04-15 11:50:31
【问题描述】:

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

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

在 viewDidLoad() 的 ViewController 中,我已经注册了第二个 nib

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

任何帮助将不胜感激:)

谢谢

【问题讨论】:

    标签: cocoa nstableview nsview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多