Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 不同笔尖中的主菜单_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c 不同笔尖中的主菜单

Objective c 不同笔尖中的主菜单,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我有一个带有ManMenu.xib的Cocoa应用程序,其中存储了主菜单,并在几个xib中处理我的应用程序的不同任务。那么,如何让我的sub-XIB或更确切地说是他们的NSViewControllerController从菜单接收操作 我有一个想法,但我不知道它是否正确:我将NSViewController子类化,并添加一些操作,如-IBActionundo或-IBActionredo,使用它的实例作为文件所有者。此外,我添加了一个指向我的应用程序委托的指针,指向实际视图,或者更确切地说是它的控

我有一个带有ManMenu.xib的Cocoa应用程序,其中存储了主菜单,并在几个xib中处理我的应用程序的不同任务。那么,如何让我的sub-XIB或更确切地说是他们的NSViewControllerController从菜单接收操作

我有一个想法,但我不知道它是否正确:我将NSViewController子类化,并添加一些操作,如-IBActionundo或-IBActionredo,使用它的实例作为文件所有者。此外,我添加了一个指向我的应用程序委托的指针,指向实际视图,或者更确切地说是它的控制器,菜单会将操作发送到该指针


明智的解决方案?

您应该将菜单项连接到第一响应者。然后,他们的行动信息将沿着响应者链传播,直到到达响应他们的东西

您需要将视图控制器设置为响应器链中其他内容的下一个响应器,以确保它位于响应器链中。我建议使用窗口控制器

说到窗口控制器,您可能应该在那里而不是在视图控制器中处理撤消。如果同一窗口中的不同视图具有不同的撤消列表,则会造成混淆。我能想到的唯一例外是,如果受控视图与文档选项卡相对应,比如在Photoshop或Xcode中