我已经将NSPersistentDocument子类化了。我也重命名了这个窗口。但是当我运行应用程序时,我将应用程序窗口的标题称为“无标题”。没有-setTitle:
方法可用于更改标题。任何想法我怎么能这样做?
答案 0 :(得分:3)
您是否通过向窗口发送setTitle:
来设置标题?
如果是这样,那就错了。请改为设置文档的displayName
。 (请记住,NSPersistentDocument
是NSDocument
的子类。)
答案 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
}