我正在开发我的第一个Cocoa Mac OS X程序,并想知道显示窗口的最佳方法。
我已将AppController
/ MainMenu.xib
作为主要启动窗口,但未选中启动时可见的MainMenu.xib窗口。我这样做是因为在应用程序加载时我正在检查它们是否已登录。如果不是,我想显示Login.xib
窗口而不是MainMenu.xib
。登录后,我会打开MainMenu.xib
窗口,然后在LoginController
方法中关闭- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSLog(@"app delegate");
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
BOOL didAuth = NO;
GTMOAuth2Authentication *auth = [GTMClasses authForService];
if (auth) {
didAuth = [GTMOAuth2WindowController authorizeFromKeychainForName:kKeychainName authentication:auth];
}
if (didAuth) {
[[DataClass sharedInstance] setIsSignedIn:YES];
NSLog(@"Already signed in %@", auth);
NSLog(@"Window: %@", self.window);
// SHOW MainMenu.xib here
} else {
NSLog(@"Not signed in %@", auth);
loginController = [[LoginController alloc] initWithWindowNibName:@"Login" owner:self];
[[loginController window] makeKeyAndOrderFront:self];
}
}
awakeFromNib
在applicationDidFinishLoadingWithOptions
之前被调用。将该代码放在我的awakeFromNib
? PS:AppController是NSObject
的子类,因此我无权访问windowDidLoad
或windowWillLoad
答案 0 :(得分:1)
awakeFromNib
是第一个被执行的方法。
您还可以使用alloc
或init
方法。
您可以将登录验证码放在那里,没有任何问题。
您必须已经看过应用程序生命周期,如何以及何时加载了哪些方法。