【发布时间】:2011-04-23 15:04:14
【问题描述】:
这似乎应该很容易,但我一定错过了一些东西。我有一个基于文档的应用程序。我还构建了一个新的 XIB,上面有一个 NSTableView 和三个按钮,我打算显示以前文件的列表。我希望在应用程序首次启动时显示此 XIB 而不是文档窗口。一旦用户选择了一个旧文件或点击“新建”按钮,我希望然后转到文档窗口。这是很常见的,我经常看到。
为了让这个工作正常,我修改了 project-info.plist 文件,并将主 NIB 文件基本名称从 MyDocument 更改为我的选择 XIB 名称。这会导致应用程序显示选择窗口而不是 MyDocument 窗口。到目前为止,似乎没有任何问题。
在我的选择窗口中,我已经为这个 XIB 设置了我的表格视图和一个数组控制器和一个自定义窗口控制器。我已将文件的所有者设置为新的窗口控制器,并将窗口控制器的窗口属性绑定到窗口,将窗口的委托属性绑定到文件的所有者以及“选择”、“取消”和“新建”按钮。没有任何东西与 NSApplication 绑定。但奇怪的是,当我运行这个应用程序时,它似乎想将这些控制器连接到 NSApplication 并出现错误(其他两个按钮相同):
无法将动作 selectButton: 连接到类 NSApplication 的目标
它还显示一个错误,即 NSApplication 对于持有对我的数组的引用的插座不符合键值对。 Array Controller、Window 和按钮没有绑定到 NSApplication,而是绑定到新的 Window Controller。我本来希望如果有任何问题不会提到 NSApplication 而是控制器绑定到的窗口控制器。
有人知道这里发生了什么吗?这是一个 Target-Action 问题,因为我将“Main NIB File Base Name”从“Main Menu”更改为“Selection”?如果我不应该更改它,那么如何让 Cocoa 允许我在显示文档窗口之前显示一个选择屏幕?
非常感谢任何帮助。 抢
【问题讨论】:
标签: cocoa xib cocoa-bindings document-based