2010-12-02 7 views
0

J'ai un bloc d'animation sur un UIView, et j'aimerais passer un animationDidStopSelector à un objet, de sorte que lorsque mon animation se termine, l'objet puisse être retiré d'un tableau.Pass @selector un objet

Le code suivant ne fonctionne pas.

[UIView setAnimationDidStopSelector:@selector(animationDidStopWithObject:)]; 
    self.dialogController.view.alpha=1; 
[UIView commitAnimations]; 

    [self.view addSubview:self.dialogController.view]; 
} 

- (void)animationDidStopWithObject:(NSString*)obj { 
    [items removeObject:obj]; 
    [self.tableView reloadData]; 
} 

Comment puis-je transmettre un objet à mon sélecteur?

Merci

Répondre

2

Vérifiez la référence UIView. Sélecteur vous passez à + setAnimationDisStopSelector: méthode doit être du (pointeur void * passé en paramètre dans + beginAnimations: contexte: call) sous forme

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 

Vous pouvez passer votre objet à ce sélecteur en utilisant le contexte des animations

+0

Merci ... Je voudrais utiliser l'API blocs (beaucoup plus simple), mais impossible pour les utilisateurs hérités. – joec

+0

Oui, je devais aussi prendre en charge les utilisateurs 3.x et malheureusement rechercher tous ces blocs apis :(et ne peut toujours pas convaincre les gestionnaires de laisser tomber les anciennes versions – Vladimir

0

votre sélection doit suivre la signature:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

Et pour passer un objet personnalisé, c'est ce que le context est utilisé pour: vous définissez avec [UIView beginAnimations:someId context:yourCustomObject]; . Notez que yourCustomObject n'est pas conservé!