0

私は最初のCocoaMacOS Xプログラムに取り組んでおり、ウィンドウを表示するための最良のアプローチを考えています。

AppController/をメインの起動ウィンドウとして使用していますが、[起動MainMenu.xib時に表示]の[MainMenu.xib]ウィンドウのチェックを外しています。これを行うのは、アプリケーションのロード時に、ログインしているかどうかを確認しているためです。ログインしていない場合は、の代わりにウィンドウを表示します。ログインしたら、ウィンドウを開いて閉じます。メソッドにこれがあります。Login.xibMainMenu.xibMainMenu.xibLoginController- (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];
    }
}
  1. AppControllerがのawakeFromNib前に呼び出されることがわかりapplicationDidFinishLoadingWithOptionsます。そのコードを私の中に入れるのが最善でしょうawakeFromNibか?
  2. そうでない場合、AppDelegateからMainMenu.xibウィンドウを開くための最良の方法は何ですか?
  3. より良いアプローチがあるとしたら、それは何でしょうか?

PS:AppControllerはのサブクラスなので、またはNSObjectにアクセスできませんwindowDidLoadwindowWillLoad

4

1 に答える 1

1

awakeFromNib実行される最初のメソッドです。

allocまたはinitメソッドを使用することもできます。

ログイン認証コードは問題なくそこに置くことができます。

アプリケーションのライフサイクル、どのメソッドがいつどのようにロードされるかを見たことがあるはずです。

ここに画像の説明を入力してください

于 2013-03-11T18:19:08.157 に答える