2012-02-24 41 views
0

視圖想從當暫停按鈕被按下暫停從更新

以h文件更新暫停多個視圖

@property BOOL appIsPaused; 

在米文件

@synthesize appIsPaused; 

-(void)playpauseAction:(id)sender 
{ 

if 

    ([audioPlayer isPlaying]){ 

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

     [audioPlayer pause]; 

     appIsPaused = YES; 

    } else { 

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

     [audioPlayer play]; 

     appIsPaused = NO; 

     [self performSelector:@selector(displayviewsAction:) withObject:nil afterDelay:11.0]; 

    } 

} 

- (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 performSelector:@selector(secondViewController) withObject:nil afterDelay:23]; 

[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 performSelector:@selector(ThirdviewController) withObject:nil afterDelay:27]; 

[secondController release]; 
} 

和它繼續像這爲多個意見。

任何想法如何暫停視圖從暫停按鈕被按下時更新。

回答

1

而不是在延遲後使用performSelector,你應該考慮使用NSTimer。

想要這樣:

聲明NSTimer *計時器伊娃。 聲明一個NSUInteger viewControl;

將viewControl設置爲0;

在方法的播放部分加入這一行:

timer = [NSTimer scheduledTimerWithTimeInterval:11 target:self selector:@selector(tick) userInfo:nil repeats:YES]; 

-(void)tick 
{ 
    switch(viewControl) 
    { 
     case 0: 
      [self performSelector:@selector(firstViewController) withObject:nil]; 
      break; 
     case 1: 
      [self performSelector:@selector(secondViewController) withObject:nil]; 
      break; 
     case 2: 
      [self performSelector:@selector(thirdViewController) withObject:nil]; 
      break; 
     . 
     . 
     . 
     default: 
      break; 
    } 

    viewControl++; 

    if(viewControl > MAX_VIEWS) 
    { 
     viewControl = 0; 
    } 
} 

,並添加暫停行動這一行:

[timer invalidate] 

它也更清潔,讓你在你的代碼的控制。

希望它有幫助。

+0

你很小複雜,所以我用這個來代替self.timer = [NSTimer scheduledTimerWithTimeInterval:11 target:self selector:@selector(displayviewsAction :) userInfo:nil repeats:NO]; 和暫停後,我添加了[定時器無效];它工作,但當暫停按鈕再次擊中恢復播放,然後意見不更新,但audiofile正在播放。我希望視頻在暫停按鈕再次播放以恢復播放時根據定時器進行更新。我怎麼能做到這一點。 – user1120133 2012-02-24 18:49:40

+1

您只需再次調用scheduledTimerWithTimeInterval。將此代碼添加到方法的播放部分。就那麼簡單。 – 2012-02-24 18:59:39

+1

我會用更好的方法更新我的答案。在交換機中使用timerInterval是錯誤的。您將不得不創建一個控件來映射哪個是下一個要調用的視圖。這樣,當你再次玩時,你不會總是看到第一張圖片。 – 2012-02-24 19:02:03