如何为 NSPersistentDocument 窗口赋予标题
Posted
技术标签:
【中文标题】如何为 NSPersistentDocument 窗口赋予标题【英文标题】:How to give title to NSPersistentDocument window 【发布时间】:2009-01-14 09:28:16 【问题描述】:我对 NSPersistentDocument 进行了子类化。我也重命名了窗口。但是当我运行应用程序时,我得到应用程序窗口的标题为“无标题”。没有可用于更改标题的 -setTitle:
方法。有什么想法我该怎么做?
【问题讨论】:
【参考方案1】:您是否通过向窗口发送setTitle:
来设置标题?
如果是这样,那就错了。改为设置文档的displayName
。 (记住,NSPersistentDocument
是 NSDocument
的子类。)
【讨论】:
【参考方案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`,标题栏中没有“已编辑”标志