2012-02-25 148 views
0

由於暫停按鈕被暫停音頻文件,所以時間無效以暫停更新視圖。重新啓動計時器

-(void)playpauseAction:(id)sender 
{ 

if 

    ([audioPlayer isPlaying]){ 

[sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateSelected]; 

    [audioPlayer pause]; 

[timer invalidate]; 

    } else { 

[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; 

    [audioPlayer play]; 

    self.timer = [NSTimer scheduledTimerWithTimeInterval:11 target:self selector:@selector(displayviewsAction:) userInfo:nil repeats:NO]; 

    } 

} 

- (void)displayviewsAction:(id)sender 
{ 
FirstViewController *viewController = [[FirstViewController alloc] init]; 

viewController.view.frame = CGRectMake(0, 0, 320, 480); 

[self.view addSubview:viewController.view]; 

[self.view addSubview:toolbar]; 

self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(secondViewController) userInfo:nil repeats:NO]; 

[viewController release]; 

} 

-(void)secondViewController { 
SecondViewController *secondController = [[SecondViewController alloc] init]; 

secondController.view.frame = CGRectMake(0, 0, 320, 480); 

[self.view addSubview:secondController.view]; 

[self.view addSubview:toolbar]; 

self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(ThirdviewController) userInfo:nil repeats:NO]; 

[secondController release]; 
} 

它是這樣的多個視圖。根據應用程序邏輯,用戶可以在任何視圖上點擊暫停以暫停音頻文件,定時器無效語句也會暫停視圖更新。當用戶再次暫停以恢復音頻文件時,它應該從該點開始更新視圖。所以,我遇到的問題是如何重新啓動計時器,以便不管用戶在哪個視圖中暫停,都會繼續更新視圖。

Anyideas我該怎麼做。

回答

1

定時器不應被重用,只需創建另一個。

1
-(void)countDown{ 
    counter--; 
    if (counter == 0){ 
     [self.timer invalidate]; 
     [self secondViewController]; 
    } 
} 

啓動您的計時器:

self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES]; 

並重新啓動您的計時器:

counter = 23; 
[self.timer fire]; 

你應該調整這個答案你的目的,因爲你可以看到,計時器只安排用於啓動-(void)secondViewController方法

+0

在每個視圖中定時器不是恆定的,它會變化 – user1120133 2012-02-25 20:07:26

+0

@ user1120133所以添加我在上面發佈的每個視圖中的方法,並解決您的問題。 – 0xDE4E15B 2012-02-25 20:09:26