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

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

【问题讨论】:

    标签: cocoa core-data


    【解决方案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
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-17
          • 2021-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-06
          • 2021-07-11
          相关资源
          最近更新 更多