2010-12-02 12 views
0

Ich habe einen Animationsblock auf einem UIView und möchte mein animationDidStopSelector ein Objekt übergeben, so dass, wenn meine Animation beendet ist, das Objekt aus einem Array entfernt werden kann.Pass @selector ein Objekt

Der folgende Code funktioniert nicht.

[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]; 
} 

Wie kann ich meinem Selektor ein Objekt übergeben?

Danke

Antwort

2

Überprüfen Sie UIView-Referenz. Selector übergeben Sie bis + setAnimationDisStopSelector: Methode muss von der Form

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

Sie Ihr Objekt zu diesem Selektor passieren können Animationen Zusammenhang mit (void * Zeiger übergeben als Parameter in + beginAnimations: Kontext: call)

+0

Danke ... Ich möchte die Blöcke API verwenden (viel einfacher), aber nicht für ältere Benutzer. – joec

+0

Ja, ich musste auch 3.x-Benutzer unterstützen und suche leider nach all diesen Block-Apis :(und kann die Manager immer noch nicht davon abbringen, alte Versionen zu löschen – Vladimir

0

Ihre Wähler muss die Unterschrift folgen:

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

Und passieren sie ein benutzerdefiniertes Objekt, das ist, was die context verwendet wird: Sie setzen es mit [UIView beginAnimations:someId context:yourCustomObject]; . Beachten Sie, dass yourCustomObject nicht beibehalten wird!

0

Sie können nicht einfach einen beliebigen Selektor mit einer beliebigen Anzahl von Argumenten übergeben. Wenn Sie die Dokumentation überprüfen, muss sie von der Form

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

Hier werden die relevanten Dokumente:

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/setAnimationDidStopSelector: