【问题标题】:Cocoa Mac Application Title says: "untitled"Cocoa Mac 应用程序标题说:“无标题”
【发布时间】:2011-01-18 02:42:42
【问题描述】:

我创建了一个基于文档的 Mac OSX 应用程序,当我在 Interface Builder 中编辑时,标题是正确的(我填写了检查器的那部分),但是一旦程序运行,应用程序标题是“无标题” .我怎样才能改变它?在我的 IB Doc Window 中,我有 Files Owner、First Responder、NSApplication 和 NSWindow 的实例。没有视图控制器,是这个问题吗?我是 Cocoa 的新手..

【问题讨论】:

  • 保存(或打开)后,它可能会更改为您的文档名称。
  • 确实如此。但是有没有办法将其设置为默认值?我希望它不显示“无标题”
  • Zakman411:根据 HIG,将未保存的新文档命名为“无标题”是正确的方法。 developer.apple.com/library/mac/documentation/UserExperience/…你为什么要违反这个约定?

标签: objective-c cocoa xcode macos interface-builder


【解决方案1】:

一种解决方案是在您的 NSDocument 子类中覆盖 -displayName

- (NSString *)displayName {
    if (![self fileURL])
        return @"Some custom untitled string";

    return [super displayName];
}

如果您使用自定义窗口控制器,还可以查看NSWindowController-windowTitleForDocumentDisplayName:

【讨论】:

    【解决方案2】:

    您已经创建了一个基于文档的 Cocoa 应用程序。对于新文档,Cocoa 将建议的文档名称设置为“无标题”。

    【讨论】:

    • 对,但你知道如何改变吗?
    【解决方案3】:

    您是指应用程序菜单标题吗?更改为在运行时匹配应用程序的名称。更改它的最简单方法是在 Xcode 中更改目标上的 Product Name 构建设置。

    【讨论】:

    • 该设置实际上有正确的名称,但它仍然不会显示。我错过了什么?
    【解决方案4】:

    那是因为您在创建此项目时选中了创建基于文档的应用程序

    您可以通过单击文档类型旁边的-按钮将其从info.plist中删除:

    在 Storyboard 中输入您自己的标题并检查窗口是否为“是初始控制器”。再次运行项目后,就OK了。

    【讨论】:

      【解决方案5】:
      - (NSString *)displayName
      {   
          NSMutableString *displayName = [NSMutableString stringWithString:[super displayName]];
      
          if ([self fileURL] == nil) {
              NSString *firstCharacter = [[displayName substringToIndex:1] lowercaseString];
              [displayName deleteCharactersInRange:NSMakeRange(0, 1)];
              [displayName insertString:firstCharacter atIndex:0];
          }
      
          return [NSString stringWithString:displayName];
      }
      

      【讨论】:

      • 您能在该代码中添加一些描述吗?它有什么作用?它是如何做到的?谢谢
      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 2012-02-11
      • 2014-05-01
      相关资源
      最近更新 更多