簡體   English   中英

在macOS應用程序的打開的窗口中更改文檔

[英]Change document in open window in macOS app

我正在為macOS編寫基於文檔的應用程序。 我正在嘗試編寫一項功能來更改當前窗口中的活動文檔(以便能夠循環瀏覽文件夾中的下一個/上一個文檔,這與使用圖像瀏覽器應用程序的方式相同)。

我應該調用什么命令在當前窗口中打開另一個文檔? 該文檔建議openDocument可能會這樣做,但是當我運行時

documentController.openDocument(nextFile!)

然后我得到一個NSOpenPanel,它在一個單獨的窗口中打開一個新文檔。 如何在當前窗口中打開另一個文檔-使用在編碼中指定的URL,而不是通過OpenPanel?

您無法在其他文檔的窗口中打開文檔。 代替

NSDocumentController > document -> window

反過來做

app delegate -> window/view -> document

該窗口由應用程序委托或控制器擁有,並且窗口的視圖控制器擁有文檔。 該文檔使用

convenience init(contentsOf url: URL, ofType typeName: String) throws

編輯:

NSDocumentaddWindowController(_:)的文檔建議可以替換窗口控制器的文檔:

您不能一次將一個窗口控制器附加到一個以上的文檔中。 此方法的默認實現是將傳遞的窗口控制器從它所附加的文檔中刪除(如果已附加到該窗口中),然后向其發送一個以self為參數的文檔消息。 它還忽略冗余調用。

是的,它確實可以在我的測試應用程序中運行:

let prevDocument = windowController.document
let newDocument = Document(contentsOf: newURL, ofType: myDocumentType) // add do-catch
NSDocumentController.shared.addDocument(newDocument);
newDocument.addWindowController(windowController)
prevDocument.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM