Перезапустите таймер снова - PullRequest
0 голосов
/ 25 февраля 2012

Недействительное время для приостановки обновления представлений, поскольку нажата кнопка паузы для приостановки аудиофайла.

-(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];
}  

Это выглядит так для нескольких просмотров. В соответствии с логикой приложения пользователь может нажать pause в любом представлении, чтобы приостановить воспроизведение аудиофайла, а оператор отмены таймера также приостановит обновление представлений. Когда пользователь снова нажмет паузу, чтобы возобновить аудиофайл, он должен начать обновлять представления с этого момента. Поэтому у меня проблема в том, как снова перезапустить таймер, чтобы он продолжал обновлять представления независимо от того, в каком режиме пользователь останавливается.

Anyideas, как я могу это сделать.

Ответы [ 2 ]

1 голос
/ 26 февраля 2012
-(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 метод

1 голос
/ 25 февраля 2012

Таймеры не должны использоваться повторно, просто создайте еще один.

...