2017-06-14 3 views
0

Nach dieser Frage (Custom NSView embedded in NSSscrollView), wenn meine benutzerdefinierte Ansicht in eine NSScrollView mit IB eingebettet ist, kann ich dies in der watchFromNib Methode erkennen und die erforderliche Initialisierung durchführen (ich muss einrichten einige Scroll-Benachrichtigungen).
Mein Problem ist, wenn durch benutzerdefinierte Ansicht zu einem NSScrollView aus Code hinzugefügt wird, die documentView-Eigenschaft scrollview festlegen. In diesem Szenario wird meine benutzerdefinierte Ansicht auf irgendeine Weise benachrichtigt (einige NSView-Methode, die aufgerufen wird und ich überschreiben kann) oder muss ich meine Initialisierung explizit durchführen, nachdem meine Ansicht der Bildlaufansicht hinzugefügt wurde?Benachrichtigung, wenn benutzerdefiniertes NSView zu einem NSScrollView hinzugefügt wurde

Antwort

1

Die documentView der Bildlaufansicht ist eine Unteransicht dieser Bildlaufansicht und NSView hat viele nützliche Methoden. Im Kapitel „Verwalten der Ansichtshierarchie“:

viewDidMoveToSuperview

Informiert die Ansicht, dass seine Superview (möglicherweise auf Null) geändert hat.

viewDidMoveToWindow

Informiert die Ansicht, daß es auf eine neue Ansichtshierarchie hinzugefügt wurde.

Wenn die Ansicht zu einem Superview hinzugefügt wird, wird viewDidMoveToSuperview aufgerufen. Aber die Ansicht könnte bereits in einer Ansicht (in einer XIB oder in Code) sein und diese Superansicht könnte zu einer Bildlaufansicht hinzugefügt werden. viewDidMoveToWindow wird aufgerufen, wenn die Ansicht einer Ansichtshierarchie hinzugefügt oder daraus entfernt wurde.

Verwandte Themen