2010-03-08 46 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 { 
}