查看一些示例代码时,请注意,当选择了"create document-based application“选项时,在IB中设置主窗口标题不起作用。窗口将以"Untitled“作为标题。为了设置窗口标题,我们需要覆盖MyDocument : NSDocument中的- (NSString *) displayName {}。我只希望一些xcode方面的专家能解释为什么会这样。也就是说,当我们在最初生成项目时选中"create document-based application“选项时,会向系统中添加什么内容?
发布于 2011-03-08 11:23:26
请理解,当您在Xcode中从模板创建项目时,Xcode实际上并不会生成任何代码。当然,它可能会用你的名字,你的项目名称等填充一些空格,但你得到的基本上是你所选择的项目类型的开机代码。当你选中“基于文档”选项时,添加的是一个为你的应用定制了一个合理名称的NSDocument子类。
看看苹果的“人机界面指南”,比如this,你会发现文档窗口的标题应该是基于它们所显示的文档的。因此,基于文档的应用程序的默认行为是将标题设置为文档文件的文件名。
最后,查看NSDocument的参考页面,您会发现所看到的行为是NSDocument类的一部分。特别是,如果查看-displayName方法,就会发现有关如何正确定制窗口标题的信息。
发布于 2011-03-08 11:30:10
窗口控制器可以自由地覆盖IB中赋予窗口的标题。在非基于文档的应用程序中,默认的窗口控制器将使用窗口的标题,因为它们没有理由不这样做。但是,当文档创建它的窗口控制器时,它会告诉它们它们已连接到它。然后,它们查看文档的displayName属性并更新窗口标题作为响应。默认实现只是将窗口的标题设置为与文档的标题相同,直到保存文件时才会取消标题。
https://stackoverflow.com/questions/5227759
复制相似问题