在“保存更改?”之前拦截NSDocument关闭片

时间:2018-02-26 16:14:23

标签: objective-c nsdocument

我有一个基于NSDocument的应用程序,其中文档的窗口可能有子窗口,需要在文档关闭之前查询更改。所以我试图拦截关闭文档窗口来做到这一点,但我找不到一个可靠的方法。

我尝试使用-[Document canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:]来表示这一点,但很明显,只有在文档发生变化时才会调用(由-updateChangeCount发出信号)。如果没有变化,就永远不会被调用。

我尝试使用视图控制器的viewWillDisappear来更新文档也失败了,因为现在注册文档的任何更改为时已晚,所以它们不会被保存(canCloseDocumentWithDelegate:...已经此时被召唤。)

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

好吧,我想说如果子窗口包含在文档关闭之前必须要求的更改,则文档更改。这应该反映在(主)文档窗口中。但是,......

如果文档不包含更改,则应调用 private void extractNomsJoueurs(HtmlAgilityPack.HtmlDocument doc) { var links = doc.DocumentNode.SelectNodes("//*[contains(@class, 'bets ml')]"); var names = links.Elements("span"); foreach (var name in names) { listNames1Bet777.Add(name.InnerText); } for (int i = 0; i < listNames1Bet777.Count(); i++) { if (i % 2 == 0) { listNames2Bet777.Add(listNames1Bet777[i]); } } foreach (string name in listNames1Bet777) { listNames1Bet777.Remove(name); } } ,因此文档系统不会要求保存。