2010-03-08 27 views
2

一旦动画完成,我想调用具有某些参数的方法。动画完成后带参数的调用方法

流程是这样的:

-(void) myMethod:(int)val 
{ 
    [self performAnimation]; 
    [self doSomethingElse:val]; // This should be done after animation completion 
} 

我相信了“doSomethingElse”的方法必须从“setAnimationDidStopSelector”中定义的方法称为 - 或者是有办法有动画块,直到DONE ?

什么是最好的方法让'setAnimationDidStopSelector'调用的方法知道它需要调用的方法及其参数?这可以通过选择器来完成吗?或者是通过将方法及其参数存储在类临时变量中并在需要时访问它们的唯一方法?

回答

0

在完成动画之前,没有办法阻止动画(除非您只是在动画持续时间内阻止主线程)。您可以将两个参数传递给didStopSelector方法:动画名称和上下文名称必须是字符串,但上下文可以是任何东西

1

是威盛setAnimationDidStopSelector调用的方法有此签名:

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

context参数包含你通过什么来beginAnimations:context:所以你可以用它来传递valanimationDidStop:finished:context:如果实际的方法您需要调用的也是一个变量,您应该创建一个NSInvocation并将其作为上下文传递。

3

的performAnimation不会阻止trhread所以唯一的办法知道如果动画结束是设置这样的选择:

-(void) myMethod:(int)val { 
    [self setAnimationDelegate:self]; 
    [self setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; 
    [self performAnimation]; 
} 

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