私は最初のCocoaMacOS 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];
}
}
- AppControllerがの
awakeFromNib
前に呼び出されることがわかりapplicationDidFinishLoadingWithOptions
ます。そのコードを私の中に入れるのが最善でしょうawakeFromNib
か? - そうでない場合、AppDelegateからMainMenu.xibウィンドウを開くための最良の方法は何ですか?
- より良いアプローチがあるとしたら、それは何でしょうか?
PS:AppControllerはのサブクラスなので、またはNSObject
にアクセスできませんwindowDidLoad
windowWillLoad