使用新的“文档”项目创建的“最近打开”菜单发生了一些非常奇怪的事情。
即使在Interface Builder中,它看起来也像其他菜单一样,它具有一些隐藏的特殊行为,它会出现。
我试图通过将菜单的委托设置为AppDelegate来创建自己的菜单项,然后在其中实现menuWillOpen
处理程序。但是,它永远不会被调用。即使在IB中看起来相同,对新添加的子菜单也可以这样做。
这实际上不再是一个问题。我原本是作为一个问题写这个的,不理解为什么我不能更新此菜单,但是现在看来,我只需要删除默认菜单并添加自己的菜单即可,而不用修改自动创建的菜单。
答案 0 :(得分:0)
以防万一其他人遇到这个奇怪的问题,请按以下步骤操作:
systemMenu
属性,如下所示:<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="...">
NSDocumentController
会自动再次创建一个菜单。为防止这种情况,请创建NSDocumentController
的自定义子类,并在其中实现以下代码:- (NSUInteger)maximumRecentDocumentCount {
return 0;
}
要注册自定义控制器,请在AppDelegate的[CustomDocumentController sharedDocumentController];
方法中调用其init
。
将新创建的子菜单的委托分配给AppDelegate并在AppDelegate中实现此方法:
- (void)menuWillOpen:(NSMenu *)menu {
// Add your menu items here
}