Ich habe überall nach einer Antwort gesucht, und ich habe versucht, es zu implementieren, aber nichts funktioniert. Grundsätzlich muss ich in der Lage sein, Änderungen im Subview-Array einer VC-Ansicht zu beobachten. Wenn eine vorhandene Ansicht aus diesem Array entfernt wird, möchte ich darüber informiert werden und Code ausführen.Kann KVO Änderungen in einem UIView Subview Array beobachten?
Ist es möglich?
EDIT - Mehr Informationen
Ich versuche, eine Lösung für einen seltsamen Rand Fall Fehler zu machen, wo schnell auf dem UISearchBar eines UISearchDisplayController Klopfen (sehr custom) bewirkt, dass die sdController (oder besser gesagt der verwaltete SearchBar in navBar Wirkung) um aus der Ansicht zu verschwinden, aber der sdController ist NOCH AKTIV. Das bedeutet, dass die navBar am Ursprung -y verbleibt und die folgende Tabelle nicht scrollbar ist.
Mein ursprünglicher Gedanke war, zu einem Zustand zu kommen, wo der sdController aktiv war, aber die UISearchDisplayControllerContainerView war nicht in der View-Hierarchie. Ich habe versucht, dies in der VC-AnsichtDidLayoutSubviews zu testen, aber leider, wenn Sie auf eine Suchleiste tippen und die sdController-Animation initiieren, der SDController ist aktiv, und die UISearchDisplayControllerContainerView ist nicht in der View-Hierarchie :(.
Schmutzige Tricks: Post Benachrichtigung über NSNotificationCenter wo Sie Subview entfernen und ihn fangen, wo Sie einige Code ausführen müssen. Oder benutze Delegierte. –
Sie können KVO 'subviews' nicht. Das System sendet jedoch 'layoutSubviews' an eine Sicht, wenn es Subviews gewonnen oder verloren hat (wenn sich die Superview in der Onscreen-Ansichtshierarchie befindet). Vielleicht können Sie eine benutzerdefinierte UIView-Unterklasse als Superview verwenden und tun, was Sie in 'layoutSubviews' brauchen. Wenn das nicht ausreicht, bearbeiten Sie Ihre Frage, um weitere Details zu ** warum ** anzugeben, wenn Sie benachrichtigt werden, wenn die Unteransicht entfernt wird. Wir können Ihnen wahrscheinlich eine bessere Lösung geben. –
@robmayoff danke für den Kommentar. Ich habe meine Frage aktualisiert. – Lizza