2009-08-20 8 views
4

J'ai des problèmes pour savoir comment obtenir un nsview personnalisé pour communiquer que quelque chose est arrivé à ma classe de contrôleur principal.interface builder personnalisé nsview envoi d'action au parent

la classe contrôleur a une instance de Mapview comme ceci:

IBOutlet MapView *mapView; 

qui est instancié par le constructeur d'interface, et dans ma classe MapView, je reçois des clics de souris comme ceci:

- (void)mouseDown:(NSEvent *)theEvent { //whatever... 

mais lorsque cela se produit, une ou deux variables doivent être modifiées dans la classe de contrôleur - comment puis-je faire cela?

Répondre

6

Définir un protocole pour votre classe de vue personnalisée et mettre en œuvre le protocole dans votre contrôleur, dans votre classe de vue youll une propriété de délégué à votre avis qui met en œuvre le code de protocole ... que la propriété ressemblerait

@property(assign) id <MyProtocol> myProtocolDelegate; 

alors le contrôleur peut se définir lui-même en tant que délégué pour la vue et, s'il implémente correctement le protocole, il devrait recevoir les messages lorsqu'il est appelé par la vue. Informations ici http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html

Questions connexes