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