StackOverflow中的第一个问题以及Cocoa newbye,此外我正在使用XCode 4(请好心!)
情景:
一个简单的 NSPersistentDocument 多窗口:每个文档都有一个 window.nib 和一个附加的 WindowController 当我按下 WINDOW TOOLBAR 中的按钮时,应用程序运行 NSTask (在后台)。
在窗口中(在View中)我决定放置一个漂亮的NSProgressIndicator(不确定),当任务结束时动画,并在任务结束时停止动画(我通过通知收集任务消息)。
示例代码:
NSButton - > IBAction - > WindowController中的方法
- (IBAction)launchSim:(id)sender
{
[simcell launchTask];
[progBar startAnimation:self];
.... more code ...
}
一切都很美好。
现在(像往常一样在这种情况下)你得到一个奇怪的错误,你开始变得没有成效:
我决定也从MainMenu(来自NSMenuItem)运行相同的Action:
在MainMenu.xib中:
NSMenuItem(“RUN”) - > FirstResponder - >第一响应者中的用户定义的操作:launchSim(类型ID)
RUN菜单项正确运行任务(我有NSLog DEBUG消息)但是progressBar的动画(startAnimation)没有启动!
两项行动的差异:
这两个动作都正确执行了方法中代码的其他部分,但是如果我从菜单调用动作,我看不到任何进度指示器的动画。
我错过了什么?
谢谢和最诚挚的问候
答案 0 :(得分:0)
您无需对第一响应者执行任何操作即可将菜单项连接到操作。
使菜单项执行操作的方式与使按钮执行操作的方式完全相同:
答案 1 :(得分:0)
我回答自己,因为我发现了这个错误:
结构是“高级”NSPersistentDocument的经典结构:
这遵循MVC架构:
我的错误是在视图中创建一个NSObject并将他链接到NSWindowController,而正确的方法是将NSWindowController的SubClass设置为文件所有者,现在神奇地, MainMenu启动动画。这在某种程度上与响应者链有关,但远离我目前对Cocoa的了解。如果有人可以评论和解释....