基于文档的应用程序 - 如何打开合并为一个的最近文档 window
Document based application - how to open recent documents merged in one window
当我的应用程序(基于文档)启动时,我会打开所有最近使用的文档。所有文档都以单独的 windows 开头。我的目标是在选项卡中打开所有 window。
在 Swift 中,试试这个:在您的应用委托中通过调用 'window.mergeAllWindows' 实现 applicationDidFinishLaunching,其中 'window' 是第一个 window 控制器的 window第一份文件。请注意,mergeAllWindows 在 Mac OS 10.12.
中可用
'DispatchQueue.main.asyncAfter' 用于确保 windows 在调用 mergeAllWindows 时已恢复,您可能更喜欢一种更好的方法来确保所有 windows 已恢复。
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
}
}
}
}
当我的应用程序(基于文档)启动时,我会打开所有最近使用的文档。所有文档都以单独的 windows 开头。我的目标是在选项卡中打开所有 window。
在 Swift 中,试试这个:在您的应用委托中通过调用 'window.mergeAllWindows' 实现 applicationDidFinishLaunching,其中 'window' 是第一个 window 控制器的 window第一份文件。请注意,mergeAllWindows 在 Mac OS 10.12.
中可用'DispatchQueue.main.asyncAfter' 用于确保 windows 在调用 mergeAllWindows 时已恢复,您可能更喜欢一种更好的方法来确保所有 windows 已恢复。
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
}
}
}
}