2010-12-10 101 views
0

當我主要的viewController是第一次點擊,就開始顯示演示(上重複)如下:停止編程循環

showingDemo = YES; 
[self startDemo]; 

- (void)startDemo { 
    if (showingDemo) { 
     [self performSelector:@selector(stepone) withObject:nil afterDelay:1.5f]; 
     [self performSelector:@selector(steptwo) withObject:nil afterDelay:2.0f]; 
     [self performSelector:@selector(stepthree) withObject:nil afterDelay:3.8f]; 
     [self performSelector:@selector(stepfour) withObject:nil afterDelay:4.3f]; 
     [self performSelector:@selector(startDemo) withObject:nil afterDelay:5.6f]; 
    } 
} 

當它被點擊一次,我帶來了新的視圖控制器屏幕

showingDemo = NO; 
[self.view addSubview:newView]; 

我以爲這會阻止無限循環。

當用戶返回到我的主要的viewController:

[newView.view removeFromSuperview]; 

並再次在屏幕上點擊:

showingDemo = YES; 
[self startDemo]; 

在測試我的應用程序,如果我點擊快速反擊(循環具有前有時間結束了,程序似乎要經過兩次循環 - 之前的循環和新的循環 - 因此它看起來很奇怪,'step3'函數在'stepone'之前發生,等等。

任何人都知道一個更好的方法來停止循環我已經編程好了,所以當我以後再次啓動它時,它不會運行多個循環,認爲前一個沒有完成?

非常感謝!

回答

3

當您設置showingDemo爲NO,叫NSObject中的cancelPreviousPerformRequestsWithTarget:以取消所有待執行的請求:

showingDemo = NO; 
[NSObject cancelPreviousPerformRequestsWithTarget:self]; 
[self.view addSubview:newView]; 
+0

美麗。簡單。真棒。謝謝! – RanLearns 2010-12-11 00:26:00