Wie kann ich den track öffnen und schließen-Ereignis des NSWindow?
Ich habe versucht – windowDidExpose:
aber es hat nicht funktioniert. Was muss ich haben, um zu versuchen, für diese?
Meinem Fenster ist ein Dienstprogramm-Fenster.
-- edit für mehr Klarheit -
Was ich will sind:
viewWillAppear
viewWillDisappear
viewDidLoad
viewDidUnload
in Cocoa Touch.
windowDidExpose:
ist für ein Fenster ist bereits bestellt und wird offenbart, die von anderen windows-bestellt dahinter.- Oh danke für die Klarstellung. Es war schwer zu wissen, nur die Beschreibung in der Referenz.
- Die Beschreibung ist besser für die Benachrichtigung, dass diese Methode entspricht: developer.apple.com/mac/library/documentation/Cocoa/Reference/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist
windowDidClose:
, aber das bezieht sich wohl nur zu schließen; wenn Sie Ihre Fenster einorderOut:
Nachricht, ich denke nicht, dass das zählt.Müssen Sie wahrscheinlich entweder nur verfolgen Sie es aus was auch immer code, den Sie sind der Bestellung der Fenster in ein-und aus, oder eine Unterklasse der window-Klasse und überschreiben Sie die Methoden, wie
makeKeyAndOrderFront:
undorderOut:
(was auch immer Sie verwenden, mindestens zu veröffentlichen, benutzerdefinierte Benachrichtigungen, die Sie vor dem Aufruf von bis zusuper
.windowDidClose:
für, die.windowDidClose:
ist."Sehr alte Frage, aber nur für die Dokumentation Zweck:
Track öffnen:
In Ihrem windows-controller überschreiben Sie die Methode:
Strecke in der Nähe von:
Implementieren Sie die Methode
id
parameter für die Benachrichtigung der Beobachter?Für Swift
Track offenen: In Ihrem windows-controller überschreiben Sie die Methode:
Strecke in der Nähe von: Implementieren Sie die Methode:
NotificationCenter.default.addObserver(self, selector: #selector(windowWillClose), name: NSWindow.willCloseNotification, object: window)
und@objc func windowWillClose() -> Void { NotificationCenter.default.removeObserver(self) //Do here what you want.. }
Kam ich mit einem hack für den Umgang mit dieser. Es gibt keine Benachrichtigung, dass Signale, dass ein Fenster auf dem Bildschirm, aber es gibt eine Benachrichtigung, dass ist ziemlich sicher zu sein gesendet, wenn ein Fenster auf dem Bildschirm. Ich spreche von
NSWindowDidUpdateNotification
, der angibt, dass ein Fenster aktualisiert sich.Natürlich, es ist nicht nur gesendet, wenn das Fenster angezeigt wird—es ist geschickt, jedes mal, wenn das Fenster updates. Unnötig zu sagen, dass diese Benachrichtigung einen viel mehr als einmal. Sie wollen also zu beobachten, für die es das erste mal, tun Ihre Sache, und ignorieren Sie alle nachfolgenden Meldungen. In meinem Fall wollte ich eine Liste zu einem Fenster, das einen anderen Teil meiner app würde die Reihenfolge, in der später. Also ich habe so etwas wie dieses:
Es keinen besonderen Grund, warum Sie verwenden würde eine block-basierte Beobachter—eine Methode, die-basierend Beobachter würde genauso gut funktionieren.