我上周开始使用目标 C,所以我才刚刚开始了解 MVC 设计模式的工作原理。基本上我在可可中下载了这个开源网络应用程序包装器:
https://github.com/maccman/macgap
我想改变它,以便在我重新打开它时记住它的窗口位置。
我已经尝试打开笔尖并为 Autosave 分配一个值,但这不起作用。在研究了这个问题后,我发现这是因为窗口控制器自动打开级联,所以在 WindowController.m 我把
[[self.window windowController] setShouldCascadeWindows:NO];
[self.window setFrameAutosaveName:[self.window representedFilename]];
我尝试将它放在 windowDidLoad 和 init 方法中,但这也不起作用,窗口仍然不记得它的位置。
最后在 AppDelegate 中,我注意到这是实际创建控制器的代码:
- (void) applicationDidFinishLaunching:(NSNotification *)aNotification {
NSRect frame = NSMakeRect(0, 0, 800, 600);
self.windowController = [[WindowController alloc] initWithURL: kStartPage
andFrame:frame];
[self.windowController showWindow: [NSApplication sharedApplication].delegate];
self.windowController.contentView.webView.alphaValue = 1.0;
self.windowController.contentView.alphaValue = 1.0;
[self.windowController showWindow:self];
}
正如我所说,我上周开始使用objective-c(用于iOS开发),从那我知道NSMakeRect是确定窗口位置的原因。现在,我也从 Java 知道我可以做一些事情,比如在移动时将坐标写入二进制文件,然后在启动程序时读取该文件并将这些值输入 NSMakeRect,但我不认为这是最优雅的解决方案。