0
私のアプリケーション(ドキュメントベース)が起動すると、最近のすべてのドキュメントが開きます。すべてのドキュメントは別々のウィンドウから開始します。私の目標は、タブですべてのウィンドウを開くことです。ドキュメントベースのアプリケーション - 最新のドキュメントを1つのウィンドウにマージする方法
私のアプリケーション(ドキュメントベース)が起動すると、最近のすべてのドキュメントが開きます。すべてのドキュメントは別々のウィンドウから開始します。私の目標は、タブですべてのウィンドウを開くことです。ドキュメントベースのアプリケーション - 最新のドキュメントを1つのウィンドウにマージする方法
スウィフトでは、次のようにしてください。アプリケーションデリゲートで、 '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
}
}
}
}