【发布时间】:2015-07-15 15:20:25
【问题描述】:
我编写了一个带有启动画面的 OSX 故事板应用程序。它是一个带有 NSWindowController 的 NSWindow,没有子类化,它有一个 SplashViewController,它是 NSViewController 的子类。
这是SplashViewController的代码:
- (void)viewDidLoad {
[super viewDidLoad];
_timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(timeOut) userInfo:nil repeats:NO];
}
- (void)timeOut
{
[self performSegueWithIdentifier:@"main" sender:self];
}
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender
{
[_timer invalidate];
_timer = nil;
[self.view.window.windowController close];
}
这会按预期关闭窗口/窗口控制器。
segue 有 show 类型并呈现另一个 NSWindowController,它具有 MainViewController,NSViewController 的子类。当 MainViewController 打开保存对话框时:
NSArray *a = [[NSApplication sharedApplication] windows];
NSLog(@"%ld", a.count);
NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setAllowedFileTypes:@[@"pdf"]];
[savePanel setDirectoryURL:[NSURL URLWithString:NSHomeDirectory()]];
[savePanel beginSheetModalForWindow:self.view.window completionHandler:nil];
出现一个旧的启动窗口(并打印“1”)。什么?我的意思是为什么它会出现? NSSavePanel 和它有什么关系?
【问题讨论】:
标签: objective-c macos cocoa nswindow nswindowcontroller