可可 Mac 应用程序标题显示为:“未命名”

6

我创建了一个基于文档的Mac OSX应用程序,当我在Interface Builder中编辑时,标题是正确的(我填写了检查器的那一部分),但是一旦程序运行,应用程序的标题就变成了“Untitled”。我该如何更改它?在我的IB Doc Window中,我有Files Owner、First Responder、NSApplication和NSWindow的实例。没有视图控制器,这是问题吗?我对Cocoa不熟悉。


一旦您保存(或打开)文档,它可能会更改为文档的名称。 - zneak
可以。但是有没有一种方法可以将其设置为默认值?我更喜欢它不要显示“Untitled”。 - Zakman411
3
Zakman411: 根据苹果人机界面指南,给一个未保存的新文档命名为“untitled”是正确的方式。为什么你想违反这个惯例呢?请参考以下链接:http://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/XHIGWindows.html#//apple_ref/doc/uid/20000961-CHDHBCGE - Peter Hosey
5个回答

14

一个解决方案是在你的 NSDocument 子类中覆盖 -displayName 方法:

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

    return [super displayName];
}

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


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

new project options

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

info.plist

在Storyboard中输入您自己的标题,并检查窗口中的“is Initial Controller”。再次运行项目后,就可以了。

1

您创建了一份基于Cocoa的文档应用。对于新文档,Cocoa会将文档的建议名称设置为“Untitled”。


2
你知道如何改变它吗? - Zakman411

0

您是指应用程序菜单标题吗?它会在运行时更改以匹配应用程序的名称。最简单的更改方法是在Xcode中更改目标的“产品名称”构建设置。


那个设置实际上有正确的名称,但它仍然不会显示。我错过了什么? - Zakman411

-1
- (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];
}

你能为那段代码添加一些描述吗?它是做什么的?它是如何实现的?谢谢。 - Cullub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接