Swift 基于文档的应用程序-如何在一个窗口中打开最近合并的文档

Swift 基于文档的应用程序-如何在一个窗口中打开最近合并的文档,swift,macos,cocoa,nswindow,nsdocument,Swift,Macos,Cocoa,Nswindow,Nsdocument,当我的应用程序(基于文档)启动时,我会打开所有最近的文档。所有文档都从单独的窗口开始。我的目标是在选项卡中打开“一体式”窗口。在Swift中,尝试以下操作:在应用程序中,通过调用“window.mergeAllWindows”实现ApplicationIDFinishLaunching,其中“window”是第一个文档的第一个窗口控制器的窗口。请注意,mergeAllWindows在Mac OS 10.12中可用 “DispatchQueue.main.asyncAfter”用于确保在调用mer

当我的应用程序(基于文档)启动时,我会打开所有最近的文档。所有文档都从单独的窗口开始。我的目标是在选项卡中打开“一体式”窗口。

在Swift中,尝试以下操作:在应用程序中,通过调用“window.mergeAllWindows”实现ApplicationIDFinishLaunching,其中“window”是第一个文档的第一个窗口控制器的窗口。请注意,mergeAllWindows在Mac OS 10.12中可用

“DispatchQueue.main.asyncAfter”用于确保在调用mergeAllWindows时已还原窗口,您可能希望使用更好的方法来确保已还原所有窗口

func applicationDidFinishLaunching(_ aNotification: Notification) {

    let dc = NSDocumentController.shared()

    // …

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) { () -> Void in

        if dc.documents.count > 0 {
            let doc = dc.documents[0]

            let wcs = doc.windowControllers

            guard let window = wcs[0].window else { return }

            if #available(OSX 10.12, *) {
                window.mergeAllWindows(self)
            } else {
                // Fallback on earlier versions
            }
        }
    }        
}