Приостановить виды из обновления - PullRequest
0 голосов
/ 24 февраля 2012

Хотите приостановить обновление нескольких представлений при нажатии кнопки Пауза

В файле h

@property BOOL appIsPaused;

В файле m

@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 Ответ

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

Вместо использования executeSelector после задержки следует рассмотреть возможность использования NSTimer.

Как это:

Объявить таймер NSTimer * ivar. Объявите 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]

Он также чище и позволяет вам лучше контролировать свой код.

Надеюсь, это поможет.

...