【问题标题】:Document based application - how to open recent documents merged in one window基于文档的应用程序 - 如何打开合并在一个窗口中的最近文档
【发布时间】:2017-02-14 20:26:15
【问题描述】:

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

【问题讨论】:

    标签: swift macos cocoa nswindow nsdocument


    【解决方案1】:

    在 Swift 中,试试这个:在您的应用程序委托中,通过调用 'window.mergeAllWindows' 来实现 applicationDidFinishLaunching,其中 '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
                }
            }
        }        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多