IOS, UIView, Ermitteln verborgener Statusänderungen in Subview

8

Gibt es trotzdem eine versteckte Statusänderung (oder andere Änderung) in einer Unteransicht in einer UIView (nicht UIViewController). Möchte diesen Async irgendwie erkennen.

Es gibt Gründe für meinen Wahnsinn.

    
ort11 10.06.2013, 22:02
quelle

1 Antwort

15

Sie können KVO (Schlüsselwertbeobachtung) verwenden, um eine Änderung am Wert der Eigenschaft hidden zu erkennen.

Fügen Sie Ihren Beobachter ( self in diesem Beispiel) folgendermaßen hinzu:

%Vor%

Fügen Sie Ihrer Beobachterklasse jetzt die folgende Methode hinzu:

%Vor%

Die Beobachtermethode wird aufgerufen, wenn die Eigenschaft hidden ihren Wert ändert. Wenn ich mich nicht irre, wird die Methode synchron im Kontext des Threads aufgerufen, der die Änderung an der Eigenschaft vornimmt. Wenn Sie eine asynchrone Benachrichtigung benötigen, können Sie diese selbst hinzufügen, zum Beispiel mit einer der NSObject -Methoden performSelector:withObject:afterDelay: oder performSelector:onThread:withObject:waitUntilDone: .

Übrigens: Sie brauchen die Checks in der Beobachtermethode natürlich nicht, wenn Sie nur ein einzelnes Objekt und / oder eine Eigenschaft beobachten. Ich habe die Schecks zu Illustrationszwecken aufgegeben. Ich empfehle auch, die Dokumentation von Apple auf KVO und KVC (Schlüsselwertcodierung), um zu verstehen, was hier vor sich geht.

Die Runtime wird Ihren Beobachter weiterhin glücklich benachrichtigen, selbst wenn der Beobachter aus der Zuordnung genommen wird - was zu einem Anwendungsabsturz führt! Vergessen Sie also nicht, den Beobachter vor der Aufhebung der Zuweisung zu entfernen. Dies sollte spätestens im dealloc des Beobachters geschehen:

%Vor%     
herzbube 10.06.2013, 22:30
quelle

Tags und Links