cocoa – 以编程方式将“Open Recent”菜单添加到上下文d出菜单中

cocoa – 以编程方式将“Open Recent”菜单添加到上下文d出菜单中,第1张

概述我有一个非文档 Cocoa应用程序,带有菜单栏图标和状态菜单.我在Interface Builder的状态菜单中添加了一个“Open Recent”菜单.填充菜单工作得很好: [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL: [NSURL fileURLWithPath:fi 我有一个非文档 Cocoa应用程序,带有菜单栏图标和状态菜单.我在Interface Builder的状态菜单中添加了一个“Open Recent”菜单.填充菜单工作得很好:

[[NSdocumentController shareddocumentController] noteNewRecentdocumentURL:            [NSURL fileURLWithPath:filename]]

现在我还想在上下文d出菜单中添加第二个“Open Recent”菜单.如何以编程方式创建菜单,以便自动填充条目,就像对状态菜单中的版本一样?

我尝试在状态菜单中创建一个副本,但它没有填充.我假设NSdocumentController不知道菜单(坦率地说,我不知道它是如何知道状态菜单中的那个).

解决方法 作为参考,我找到的有关Open Recent菜单内部工作原理的最佳文档是:
http://lapcatsoftware.com/blog/2007/07/10/working-without-a-nib-part-5-open-recent-menu/

不幸的是,它对此没有多大帮助,因为即使你创建这样的菜单,它也会被NSdocumentController忽略.在applicationDIDFinishLaunching:call之前,菜单必须存在于主菜单中,否则它将不会被拾取 – 因此,也会忽略重复的菜单.

我到底做了什么,到目前为止似乎有用的是:

第一个想法是从主菜单中选择相应的NSMenu并将其附加到其他菜单中,希望引用计数将使其工作.没有这样的运气,如果子菜单已经在另一个NSMenuItem中,则setSubmenu会抛出.

所以我重新“重新显示”子菜单 – 当我需要在另一个菜单中显示它时,我将其从主菜单的“打开最近”项目中删除,并将其设置为新菜单中的子菜单.后来,我把它搬回来了.当然,这是一个丑陋的黑客,但它完成了工作.

总结

以上是内存溢出为你收集整理的cocoa – 以编程方式将“Open Recent”菜单添加到上下文d出菜单中全部内容,希望文章能够帮你解决cocoa – 以编程方式将“Open Recent”菜单添加到上下文d出菜单中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1072288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存