你如何改变Cocoa中窗口关闭按钮的状态?

时间:2009-09-10 18:10:58

标签: objective-c cocoa

在Cocoa应用程序中,当您有未保存的数据时,您经常会在窗口的关闭按钮中看到一个小红点; TextEdit就是一个很好的例子。我仔细研究了Cocoa文档,但我找不到以编程方式设置此状态的方法。我确信有一些非常简单的方法,但很明显我错过了一些东西。

3 个答案:

答案 0 :(得分:16)

要以编程方式设置,可以使用NSWindow的-setDocumentEdited:方法。如果您正在编写基于文档的应用程序,NSDocumentManager应自动检测何时对与当前NSDocument关联的NSUndoManager进行未保存的更改。

答案 1 :(得分:14)

取决于您正在构建的应用程序类型。如果基于NSDocument,请使用NSDocument的{​​{1}}方法。如果您刚刚获得updateChangeCount:,请使用NSWindowController。如果你所拥有的只是setDocumentEdited:,则NSWindow会有setDocumentEdited:方法。

答案 2 :(得分:9)

此外,在10.6中,'setDocumentEdited'将应用程序标记为脏,因此无法快速终止。如果您不调用此方法,请在Info.plist中设置标记(请参阅What's New in 10.6

<key>NSSupportsSuddenTermination</key>
<string>YES</string>

这样,如果你的应用程序正在运行(但不是很脏),那么Mac OS X可以简单地杀死它,而不是调用礼貌的关闭请求。如果您的文档被标记为脏(或窗口是),那么它将通过正常的应用程序关闭过程来关闭它。