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

时间:2017-02-14 20:26:16

标签: swift macos cocoa nswindow nsdocument

当我的应用程序(基于文档)启动时,我打开所有最近的文档。所有文档都从不同的窗口开始。我的目标是在标签中打开一个窗口。

1 个答案:

答案 0 :(得分:1)

在Swift中,试试这个:在你的应用委托实现applicationDidFinishLaunching,通过调用' window.mergeAllWindows'在哪里'窗口'是第一个文档的第一个窗口控制器的窗口。请注意,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
            }
        }
    }        
}