如何为 NSPersistentDocument 窗口赋予标题

Posted

技术标签:

【中文标题】如何为 NSPersistentDocument 窗口赋予标题【英文标题】:How to give title to NSPersistentDocument window 【发布时间】:2009-01-14 09:28:16 【问题描述】:

我对 NSPersistentDocument 进行了子类化。我也重命名了窗口。但是当我运行应用程序时,我得到应用程序窗口的标题为“无标题”。没有可用于更改标题的 -setTitle: 方法。有什么想法我该怎么做?

【问题讨论】:

【参考方案1】:

您是否通过向窗口发送setTitle: 来设置标题?

如果是这样,那就错了。改为设置文档的displayName。 (记住,NSPersistentDocumentNSDocument 的子类。)

【讨论】:

【参考方案2】:

您不更改标题,您的用户通过保存文档来更改。

【讨论】:

【参考方案3】:

您可以将Window的标题绑定到文档并使用Key-Value-Observation对其进行更新。

使用 Interface Builder 选择 MyDocument.xib 的“窗口”并移至检查器中的“绑定”选项卡。检查“标题”以绑定到“文件所有者”和“模型密钥路径”为“标题”。

然后在 NSPersistentDocument 的子类中添加此代码

@interface MyDocument : NSPersistentDocument 
  NSString * _title;
  
@end

@implementation MyDocument

//P All kinds of all your good stuff here

- (NSString *) title 
  return _title;


@end

现在如果你想改变窗口的标题,你可以使用 KVO。例如

- (BOOL)readFromURL:(NSURL *)absoluteURL 
             ofType:(NSString *)typeName 
              error:(NSError **)outError 

  //P All your good code

  [self willChangeValueForKey:@"title"];
  _title = [absoluteURL lastPathComponent];
  [self didChangeValueForKey:@"title"];  

  //P More good code


【讨论】:

以上是关于如何为 NSPersistentDocument 窗口赋予标题的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSPersistentDocument 创建“文档”

创建持久存储时 NSPersistentDocument 崩溃

NSPersistentDocument:浏览版本:尝试添加只读文件

撤消麻烦:以编程方式初始化`NSPersistentDocument`,标题栏中没有“已编辑”标志

NSPersistentDocument 和 NSArrayController 与 MagicalRecord

如何在 XCTestCase 中测试 NSPersistentDocument?