我创建了一个cocoa应用程序(不是基于文档的),并且具有默认的MyAppDelegate类和MainMenu nib文件。我还创建了一个新的nib,它包含一个名为Splash的窗口和一个名为SplashWindowController的窗口控制器类(NSWindowController)。
我想要的是,当应用程序启动而不是MainMenu nib窗口打开时,我想打开Splash窗口。
我认为我必须在AppDelegate类中创建一个SplashWindowController实例,然后实例化窗口并将其设置为前面。但是我尝试过几个方法,比如在我的AppDelegate类中包含对SplashWindowController.h文件的引用,以及向MainMenu nib添加一个对象,并将其类设置为SplashWindowController。但两者都没有运气。
如果那里的任何人可以帮助我解决这个问题,那么在一天中最好的时候,我们会非常感激这一点(看似简单的任务)。
提前致谢。
答案 0 :(得分:9)
您可以简单地将两个窗口合并为一个.xib文件。
<强> ExampleAppDelegate.h 强>
#import <Cocoa/Cocoa.h>
@interface ExampleAppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet id splash;
IBOutlet id window;
}
- (IBAction)closeSplashButton:(id)sender;
- (void)closeSplash;
@end
<强> ExampleAppDelegate.m 强>
#import "ExampleAppDelegate.h"
@implementation ExampleAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(closeSplash)
userInfo:nil
repeats:NO];
}
- (IBAction)closeSplashButton:(id)sender {
[self closeSplash];
}
- (void)closeSplash {
[splash orderOut:self];
[window makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];
}
@end
<强> MainMenu.xib 强>
<强>结果强>
启动时只能看到启动窗口。启动窗口会在10秒后自动关闭。用户可以通过按下按钮直接关闭启动窗口。关闭启动窗口后,主窗口会显示出来。