如何为NSPersistentDocument窗口赋予标题

时间:2009-01-14 09:28:16

标签: cocoa core-data

我已经将NSPersistentDocument子类化了。我也重命名了这个窗口。但是当我运行应用程序时,我将应用程序窗口的标题称为“无标题”。没有-setTitle:方法可用于更改标题。任何想法我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

您可以将Window的标题绑定到文档,并使用Key-Value-Observation更新它。

使用Interface Builder选择MyDocument.xib的“Window”并移至检查器中的“Bindings”选项卡。检查'标题'是否绑定到'文件所有者','模型关键路径'是'标题'。

然后在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

}