Supposons que vous avez les classes suivantes:
@interface Base {
}
- (IBAction)method:(id)sender;
@end
@interface Derived {
}
@end
Si dérivée ne dispose pas de son propre implémentation de method:
alors votre configuration standard avec self
et @selector(method:)
fera ce que vous voulez.
Si Dérivé a sa propre implémentation de method:
alors vous n'avez pas d'autre choix que d'ajouter votre propre méthode en dérivée qui ne fait que transférer l'appel jusqu'à l'implémentation de la superclasse.
- (void)callMethodOnSuper:(id)sender {
[super method:sender];
}
Utilisez ensuite
@selector(callMethodOnSuper:)
à la place. Vous ne pouvez pas fournir
super
comme cible.
EDIT: Ce qui suit est une mise à jour basée sur le commentaire ci-dessous clarifiant réellement ce que l'OP veut faire. Pour vous assurer que je suis clair, je vais réaffirmer ce que vous semblez être votre situation. Vous avez un contrôleur de vue, disons MyViewContoller, dont la vue a trois sous-vues. Une de ces sous-vues, une MyCustomView, a des sous-vues UIButton.
Ma suggestion est la suivante:
@interface MyViewController {
}
@end
@interface MyCustomView {
UIButton* button1;
UIButton* button2;
}
@property (nonatomic,readonly,retain) UIButton* button1;
@property (nonatomic,readonly,retain) UIButton* button2;
@end
Lorsque votre contrôleur de vue est la construction, il est vue:
[myCustomView.button1 addTarget:self action:@selector(method:)...
[myCustomView.button1 addTarget:self action:@selector(method:)...
Je pense que c'est probablement le meilleur dans mon cas. – Rudiger