2012-04-12 8 views
0

Ich sehe dies auf iOS die ganze Zeit aufgerufen, und es macht es sehr schwer, einige der coolen Core-Abimation-Sachen da draußen auf den Mac zu portieren, denn ich kann nicht herausfinden, wofür ...Was ist der Mac Äquivalent von iOS CALayer "willMoveToSuperview"?

-(void)willMoveToSuperview:(UIView *)newSuperview { 

TwUI (Twitters Mac-GUI-Framework) hat ein ähnliches/identischen Verfahren in ihrer TUIView Klasse, - (void)willMoveToSuperview:(TUIView *)newSuperview {}, die ein Verfahren zur Herstellung eine neue Instanz von @interface TUIView : TUIResponder Unterklasse zu erstellen ist. Das führt mich zu der Annahme, dass es ein allgemeiner Aufruf ist, eine neue Instanz von NSResponder zu erstellen. Ich gebe zu, dass es eines der Cocoa Patterns ist, die ich verstehe Least ... Ich dachte, es könnte ein Anruf sein, nur um den View zu entladen, oder um eine neue Ansicht zu laden, oder vielleicht um die Ansichtshierarchie zu ändern .. Aber wieder nicht sicher.

Egal ... gibt es einen direkten/äquivalenten Anruf auf der Mac-Seite, oder ist das ein anderes Biest, aufgrund der grundlegenden Unterschiede in der View Controller-Struktur zwischen AppKit/UIKit?

Antwort

3

Sie können -[NSView viewWillMoveToSuperview:] in einer benutzerdefinierten NSView-Unterklasse überschreiben. Dies ist einfach ein Mittel für Ihre Klasse, um benachrichtigt zu werden, wenn sich ihre Position in der Ansichtshierarchie ändert. Es hat keine tiefere Bedeutung außer dem, was sein Name bedeutet, aber Sie können es natürlich nutzen, um verschiedenen Zwecken zu dienen. Es ist keine Methode für einen Delegaten oder den View-Controller, aber Sie können diese Delegierung selbst implementieren, wenn Sie möchten.

Wenn Ihr Code Ansichten um die Ansichtshierarchie herum bewegt, kann er auch sofort direkt machen, was er will, was auch ungefähr ist, wenn eine solche Methode aufgerufen würde.

Verwandte Themen