2012-02-08 10 views
2

NSWindowRestoration(10.7 Lion)を実装する際に問題が発生しています。私はプロトコル通知を取得していません。NSWindowRestorationの例はありますか?

どこかに実装されたサンプルアプリケーションがありますか?私はApple Developerサイトで見つけられません。ありがとう!


編集:答えとしてマークされた質問は便利ですが、私の場合の問題は、私はメニューバー専用アプリケーションを使用していたということでした。私はウィンドウの復元はまだドックレスのアプリケーションで動作しないと思います。スナップ!

+ (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler 
{ 
    // Get the window from the window controller, 
    // which is stored as an outlet by the delegate. 
    // Both the app delegate and window controller are 
    // created when the main nib file is loaded. 
    MyAppDelegate* appDelegate = (MyAppDelegate*)[[NSApplication sharedApplication] delegate]; 
    NSWindow* mainWindow = [appDelegate.windowController window]; 

    // Pass the window to the provided completion handler. 
    completionHandler(mainWindow, nil); 
} 

hereが見つかりました:

答えて

5

"El Developer"で記述されているクラスメソッド+ (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandlerは、ソリューションの半分に過ぎません。

メソッドを実装している(NSWindowRegistrationプロトコルに準拠している)クラスもウィンドウの "Restoration Class"として登録する必要があります。 ウィンドウが最初に作成されたら、- (void)setRestorationClass:(Class <NSWindowRestoration>)restorationClassメソッドを使用してウィンドウを登録します。

復旧のための

_myWindowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"]; 
_myWindowController.window.restorationClass = self.class; 
_myWindowController.window.identifier = @"MyWindow"; 

:初期化のためのウィンドウコントローラ、用

+ (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler { 

    if ([identifier isEqualToString:@"MyWindow"]) { 
     MyAppDelegate *appDelegate = (MyAppDelegate *)NSApplication.sharedApplication.delegate; 
     NSWindow *myWindow = appDelegate.myWindowController.window; 

     completionHandler(myWindow, nil); 
    } 
} 
1

一つの小さなコードsnipetがあります。

うまくいけば、これが役に立ちます。

編集:

は、あなたのアプリケーションクラスでプロトコルを実装していることを確認してくださいあなたは、m個のファイルに追加する必要が覚えています。

@interface MyClass : FatherClass <NSWindowRestoration>

最後の行が間違っていることができるように**私は、プロトコルの名前の100%ではないよ、私は今急いでごめんなさい、それはどちらかそれかNSWindowRestorationDelegateです。

+0

はい、私は最初の場所で呼び出され、そのメソッドを取得する方法がわかりません。 – Yep

+0

編集を確認します。 –

+0

いいえ、私はすでにそれを行い、それは動作しません。 – Yep

関連する問題