【发布时间】:2012-03-21 01:33:19
【问题描述】:
我正在开发一个基于文档的可可应用程序。 启动界面仿照 GarageBand:显示欢迎屏幕,显示两个交替视图之一(通过分段控件切换):“创建新项目”和“浏览最近的项目”。每个视图都由专用的 NSViewController 控制(在本例中为 NewProjectViewController 和 RecentProjectsViewController)。
为了实现这一点,我将 NSDocumentController 子类化,以便在启动时显示这个“欢迎屏幕”,而不是创建一个空文档(在用户指定某些最低设置之前,空文档在我的应用程序中没有意义)。
在启动/初始文档创建后,如果用户选择“创建新项目...”(即新文档),我会在欢迎屏幕中显示一个与“新项目”选项卡重复使用相同界面的窗口,通过实例化相同的 NewProjectViewController 并将其视图添加到窗口。
在这两种情况下,视图控制器的视图都是从 .xib 创建的。视图控制器本身以编程方式进行实例化,并使用 -addSubview: 将其视图添加到窗口的预先存在的子视图中。
NewProjectViewController 的视图包含几个可编辑的 NSTextField 实例和其他控件。
问题: 视图控制器视图中的所有 NSTextField 实例只会在第一次接受文本输入;从第二次显示视图开始,尝试编辑文本将产生系统警报声。 可以选择(突出显示)文本,但不能更改。此外,可以通过编程方式更改文本。
其他控件(弹出按钮)可以毫无问题地更改。
我尝试从头开始显示“新建文档”窗口(而不是欢迎屏幕),但结果是一样的:第一次有效,第二次无效。
这是第一响应者的问题吗?
【问题讨论】:
-
另外,使用 10.6 Snow Leopard。
标签: cocoa nstextfield nsviewcontroller document-based