![](/img/trans.png)
[英]How to open programmatically a document in a NSDocument macOS app?
[英]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
編輯:
NSDocument
的addWindowController(_:)
的文檔建議可以替換窗口控制器的文檔:
您不能一次將一個窗口控制器附加到一個以上的文檔中。 此方法的默認實現是將傳遞的窗口控制器從它所附加的文檔中刪除(如果已附加到該窗口中),然后向其發送一個以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.