2009-09-10 12 views
15

W aplikacjach Cocoa często pojawia się mała czerwona kropka w przycisku zamykania okna, gdy masz niezapisane dane; TextEdit jest tego dobrym przykładem. Przeszedłem przez dokumentację kakao, ale nie mogę znaleźć sposobu na programowe ustawienie tego stanu. Jestem pewna, że ​​jest na to naprawdę łatwy sposób, ale oczywiście brakuje mi czegoś.Jak zmienić stan przycisku zamykania okna w kakao?

Odpowiedz

15

Aby ustawić programowo, można użyć metody -setDocumentEdited: programu NSWindow. Jeśli piszesz aplikację opartą na dokumencie, NSDocumentManager powinien automatycznie wykryć, czy są niezapisane zmiany w NSUndoManager powiązane z bieżącym NSDocument.

13

Zależy od rodzaju aplikacji, którą budujesz. Jeśli jest to oparte na NSDocument, użyj metody NSDocument 's updateChangeCount:. Jeśli masz już NSWindowController, użyj setDocumentEdited:. NSWindow ma metodę setDocumentEdited:, jeśli wszystko, co masz, to NSWindow.

9

Ponadto, w 10.6, "setDocumentEdited" oznacza aplikację jako zabrudzoną i dlatego nie można jej szybko zabić. Jeśli nie nazwać, i ustawić flagę w Info.plist (patrz What's New in 10.6)

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

ten sposób, jeśli aplikacja jest uruchomiona (ale nie jest brudny), a następnie Mac OS X może po prostu zabić zamiast wywoływać uprzejme prośby o wyłączenie. Jeśli twoje dokumenty są oznaczone jako zabrudzone (lub okno), to nastąpi normalne zamknięcie aplikacji, aby ją zamknąć.

Powiązane problemy