Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」


Since:2000/05/16
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> Swift3でMacアプリ開発 -> Closeボタンで閉じたウインドウを再表示させる

Closeボタンで閉じたウインドウを再表示させる

Design Preamble

The user interface of your app is not consistent with the macOS Human Interface Guidelines.

Specifically, we found that when the user closes the main application window there is no menu item to re-open it.

・・・みたいなエラーで怒られて、
初のMacアプリがRejectされてしまったので、
Closeボタンで閉じたウインドウを、
Doc上のアイコンをタップする事で開けるようにしました。

ネットで探すと、Objective-Cのコードしか無かったので、
Swift用にアレンジしてみました。

AppDelegate.swiftに、以下のコードを追記。

    func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
        if(!flag){
            for window in sender.windows{
                window.makeKeyAndOrderFront(self);
            }
        }
        return true;
    }

ちなみに、Objective-Cの場合は、下記コード。

- (BOOL) applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
    if(!flag){
        for(NSWindow *_window in [[NSApplication sharedApplication] windows]){
            [_window makeKeyAndOrderFront:self];
        }
    }
    return true;
}

特定のウインドウのみ表示すれば良い場合は、
下記のような感じ。

- (BOOL) applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
    if(!flag){
        [window makeKeyAndOrderFront:self];
    }
    return true;
}

この記事を書いた日:2017/08/26

Swift3でMacアプリ開発の他の記事

資料室へ
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> Swift3でMacアプリ開発 -> Closeボタンで閉じたウインドウを再表示させる
▲このページのTopへ