【问题标题】:Cocoa - Adding menu to support versions? (Like in TextEdit)Cocoa - 添加菜单以支持版本? (就像在 TextEdit 中一样)
【发布时间】:2012-12-11 13:18:01
【问题描述】:

在 TextEdit 中,如果您单击文件名旁边的小下拉菜单,您会看到一个菜单,其中显示了几个条目,包括 RenameMove to iCloudMove ToDuplicateLock,最后是 @987654328 @。

我想知道如何支持这个菜单?在我的应用程序上,我有披露指标,但没有得到我单击它的菜单。我需要通过代码添加此菜单吗?如果是这样,我假设我需要以某种方式将其链接到窗口,但我看不到这样做的合适位置。关于我缺少什么的任何建议?

【问题讨论】:

  • 你把披露三角形放在那里了吗?顺便说一句,我喜欢你的工具栏图标!
  • @trojanfoe 我没有添加披露三角形。我正在努力添加版本支持,一旦我为我的 NSDocument 对象的 preservesVersionsautosavesInPlace 返回 true,就会出现披露三角形。感谢您对图标的评论,我会将它传递给设计师!

标签: macos cocoa nsdocument autosave


【解决方案1】:

在基于文档的应用程序中使用 NSDocument 子类时,您可以“免费”获得此功能。只要您已经实现了此处列出的所有内容:

http://developer.apple.com/library/mac/#documentation/DataManagement/Conceptual/DocBasedAppProgrammingGuideForOSX/StandardBehaviors/StandardBehaviors.html

...版本控制应该“自动”工作,因为它直接受到实施自动保存的影响。

需要考虑的事项:

  1. 您的目标操作系统最低版本是多少?
  2. 您是否正在自定义与 Window 的标题栏有关的任何内容?
  3. 您的 NSDocument 子类是否实现了现代(非弃用)读/写方法,或者您正在做一些“旧的或时髦的”?

【讨论】:

  • 1.我可以支持 10.7+ 2。我没有对标题栏进行任何自定义。 3. 我相信我将子类化为现代的方法:- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError。我已经阅读了该文档,并且相当确定我已经添加了对所有内容的支持。我想在这一点上,我将尝试创建一个基本的文本编辑应用程序,看看我是否可以让版本正常工作。
  • 看看你上面的答案,我想说“弄乱标题栏的菜单”算作“自定义与窗口标题栏有关的任何事情”。 :-) 很高兴你找到它。请将您的答案标记为已接受以结束问题。
【解决方案2】:

想通了。我在压倒一切:

- (void)menuNeedsUpdate:(NSMenu *)menu

我不需要重写这个方法,所以我删除了它。一旦我这样做了,我的菜单就开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2011-08-16
    • 2018-10-05
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多