导致编译错误的原因是:非法的NSTableView数据源?

时间:2013-08-27 14:54:00

标签: xcode cocoa interface-builder nsviewcontroller

经过一些清洁'在工作应用程序中,主窗口按照MainWindow.xib中的设计显示。

  • 我删除了IB中的MainWindowViewController对象。 (在Font Manager下面)
  • MainWindow.xib将自定义类设置为MainWindowViewController
  • 该表使用内容模式 - 基于视图
  • 该实施文件中包含两个必需的方法
  • 包含在头文件
  • 已对File's Owner
  • 进行表格视图连接

编辑:完整的错误消息是否提供了线索?为什么选择NSApplication?

*** Illegal NSTableView data source (<NSApplication: 0x100607ad0>).

我错过了什么?我应该检查什么来解决?

图片包含以帮助可视化。

Screenshot of MainWindow.xib

编辑2 :(新信息)

我删除了data source&amp;表视图中的delegate连接和错误消失了。同样的IB设计窗口打开,带有一个空表视图。

1 个答案:

答案 0 :(得分:0)

我的'项目'比文档涵盖的更复杂。如何将窗口控制器添加到Cocoa / Core Data模板并使用此控制器并不容易找到。

最明显的症状是目标控制器中的代码未被执行。存在2个必需的委托方法。 awakeFromNib也未被调用。

经过更多研究后,似乎“缺失的链接”是(先前删除的)NSObject设置为nib文件中的自定义类MainWindowViewControllerMainWindowController。我仍在寻找为什么这需要或为什么连接到文件所有者不进行连接。

一方面,我们可以将File的Owner设置为自定义类(MainWindow)ViewController或(Main)WindowController,并将包含的视图连接到File的Owner。这不像我预期的那样有效。

另一方面,(显然是正确的)我们可以在MainMenu.xib文件中添加一个NSObject,将它的自定义类设置为(MainWindow)ViewController或(Main)WindowController,然后将outlet连接到该对象的子视图。在IB中添加此对象的步骤是我找到将窗口连接到控制器的唯一方法。