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

con*_*gan 16 cocoa objective-c

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

tit*_*coy 16

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


Ale*_*lex 14

取决于您正在构建什么样的应用程序.如果它NSDocument基于使用NSDocumentupdateChangeCount:方法.如果你刚刚得到NSWindowController,请使用setDocumentEdited:.NSWindow有一个setDocumentEdited:方法,如果你所有的都是NSWindow.


AlB*_*lue 9

此外,在10.6中,'setDocumentEdited'将应用程序标记为脏,因此无法快速杀死.如果你不调用它,并在Info.plist中设置标志(参见10.6中的新功能)

<key>NSSupportsSuddenTermination</key>
<string>YES</string>
Run Code Online (Sandbox Code Playgroud)

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