2

Ich arbeite an einem iOS-Framework. Ich muss Ereignisse protokollieren, wenn der Benutzer einen bestimmten View Controller betritt oder verlässt. Dafür habe ich mir gedacht, ob ich irgendwie eine Benachrichtigung registrieren könnte, um eine benutzerdefinierte Methode auszulösen, wenn sich der Root View Controller ändert. Oder vielleicht KVO. Aber ich verstehe nicht, wie man dies unter dem Gesichtspunkt der Implementierung macht, da ich keine solche Benachrichtigung finden kann.Auslösen eines Ereignisses/einer Methode, wenn UIWindow RootViewController SWIFT ändert

Jede Hilfe in dieser Hinsicht würde sehr geschätzt werden. Vielen Dank.

Bitte beachten Sie, dass dies ein Framework-Projekt ist. Also wird das Framework erstellt und dann in eine andere App eingefügt/eingebettet. Ich habe keine Informationen über die View-Controller in dieser App. Das einzige, worauf ich zugreifen kann, ist der Root View Controller von UIWindow. Ich muss also wissen, wann eine Veränderung eintritt.

+0

Log ente in 'viewDidAppear' und' viewWillDisappear' Methoden dieser VC. Alternativ können Sie 'viewWillAppear' und' viewWillDisappear' verwenden. Sehen Sie mehr in [UIViewController ClassReference] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#/apple_ref/occ/instm/UIViewController/viewDidDisappear :) – NSNoob

+1

Wie ich gesagt habe dass es ein Framework-Projekt ist. Also ich weiß vorher nichts. Jeder könnte einfach mein Framework in seine App einbetten und nutzen. Wie würde ich auf die View-Controller-Methoden zugreifen? Ich denke nicht, dass das möglich ist. Wenn ja, bitte erzählen Sie, wie –

+1

Ah ich Ihre Frage falsch gelesen habe. Yup diese Methode wird nicht für Sie arbeiten. Ich bin mir auch nicht sicher über NSNotification. Lass mich etwas nachsehen. Wenn ich etwas passendes finde, melde ich mich bei Ihnen. – NSNoob

Antwort

0

Sie können UIViewController 's viewWillAppear und viewWillDisappear überschreiben, um zu wissen, wann ein View Controller vorgestellt/gelöscht wird.

Alternativ können Sie viewDidAppear und viewDidDisappear verwenden.

Wenn Sie die Protokollierung auf den Namen tun wollen, dann haben Sie wirklich zwei Möglichkeiten:

1. bieten eine Basis UIViewController Unterklasse für sie, außer Kraft zu setzen, die eine erforderliche Logik implementiert in viewWillAppear/viewWillDisappear Methoden.

2. implementieren Komfortmethoden (wie logAppearEvent, logDisappearEvent) für sie in ihrer UIViewController Subklassen auf ihre eigene Hand zu rufen.

+0

Es wäre besser, wenn Sie Codierungsbeispiel hinzufügen. Sonst hätte es ein Kommentar sein sollen, als ich einen verlassen habe. – NSNoob

+0

@NSNoob Wie würde das aussehen? Eine leere Methodendeklaration? Nicht alle Antworten benötigen Code-Schnipsel. ;) – damirstuhec

2

Es funktioniert. Die Antwort war ein Methodenwechsel. Nicht als erste Lösung für das Problem empfohlen. Aber wenn man es sorgfältig benutzt und man genau weiß, was man tut, ist es der richtige Weg.

eine sehr nützliche Artikel hier gefunden: Method Swizzling

Verwandte Themen