Swift: 어플리케이션이 시작되면 창이 맨 앞에 표시됩니다.

5202 단어 Swifttech
창이 이미 화면에 존재할 때 맨 앞에 놓고, 창이 없을 때 윈도 컨트롤러를 실례화해서 창을 표시합니다.applicationDidBecomeActive(_:)를 사용하면 활성화를 촉발할 수 있습니다.
AppDelegate.swift
import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    private var windowController: NSWindowController?

    func applicationDidBecomeActive(_ notification: Notification) {
        if NSApp.orderedWindows.isEmpty {
            openWindowController()
        }
	// 特に何もしなくてもウィンドウがある時、
	// アプリがアクティブになるともともとの重なり順でウィンドウが表示される
    }

    func openWindowController() {
        if windowController == nil {
            // WindowControllerの初期化
            windowController = NSWindowController()
            windowController?.window?.delegate = self
        }
        NSApp.activate(ignoringOtherApps: true)
        windowController?.showWindow(nil)
    }

}


extension AppDelegate: NSWindowDelegate {

    func windowWillClose(_ notification: Notification) {
        guard let window = notification.object as? NSWindow else { return }
        if window === windowController?.window {
            windowController = nil
        }
    }

}

좋은 웹페이지 즐겨찾기