Как изменить состояние кнопки закрытия окна в Cocoa?
В приложениях Cocoa вы часто видите небольшую красную точку в кнопке закрытия окна, когда у вас есть несохраненные данные; TextEdit - хороший пример этого. Я просмотрел документацию Cocoa, но не могу найти способ программно установить это состояние. Я уверен, что есть очень простой способ сделать это, но, очевидно, я что-то пропустил.
Ответы
Ответ 1
Чтобы установить его программно, вы можете использовать метод -setDocumentEdited:
для NSWindow. Если вы пишете приложение на основе документов, NSDocumentManager должен автоматически обнаруживать, когда есть несохраненные изменения в NSUndoManager, связанные с текущим NSDocument.
Ответ 2
Зависит от того, какое приложение вы создаете. Если он основан на NSDocument
, используйте метод NSDocument
updateChangeCount:
. Если вы только что получили NSWindowController
, используйте setDocumentEdited:
. NSWindow
имеет метод setDocumentEdited:
, если все, что у вас есть, это NSWindow
.
Ответ 3
Кроме того, в 10.6 "setDocumentEdited" отмечает приложение как грязное, и поэтому его нельзя быстро убить. Если вы этого не вызываете и установите флаг в Info.plist(см. Что нового в 10.6)
<key>NSSupportsSuddenTermination</key>
<string>YES</string>
Таким образом, если ваше приложение работает (но не является грязным), Mac OS X может просто убить его, а не вызывать вежливые запросы на завершение работы. Если ваш документ отмечен как грязный (или окно), то он завершит обычный процесс отключения приложения, чтобы закрыть его.