基于NSDocument的应用程序窗口位置

时间:2014-09-30 04:30:41

标签: objective-c xcode macos cocoa nsdocument

我的基于Xcode NSDocument的应用程序包含一个浮动面板。每次启动应用程序时,默认文档窗口和面板都会显示在屏幕上的先前位置。但是,如果我保存文档并退出应用程序然后双击保存的文件,文档窗口将与面板位于相同的原点。

关闭级联会解决问题,但当然我会失去级联。

可以下载显示问题的最小Xcode示例here

  1. 运行示例项目。
  2. 执行文件/保存。
  3. 退出应用。 <<重要
  4. 双击保存的文件。
  5. 任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

如果您想在应用终止前存储窗口状态,请尝试以下操作:

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
    // If you want to save your window position
    // you can use  [window saveFrameUsingName:@"someWindowName"];
    //
    // then use [window setFrameAutosaveName:@"someWindowName"]; at the app launch.

    return NSTerminateNow;
}

答案 1 :(得分:0)

我知道这与从面板级联的文档窗口有关。将其添加到面板控制器似乎已修复它

- (void)windowDidLoad { [super windowDidLoad]; [self setShouldCascadeWindows:NO]; }