Оператор переключения не работает - PullRequest
0 голосов
/ 28 февраля 2012

Оператор Switch не работает.Использование оператора switch для обновления представления после таймера становится недействительным.В операторе switch предполагается переключать представления с первого на второе представление, но это не так.

@property (nonatomic, assign) NSUInteger viewControl; 

@synthesize viewControl;


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

-(void)FirstViewController {
FirstViewController *viewController = [[FirstViewController alloc] init];

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

[self.view addSubview:viewController.view];

[self.view addSubview:toolbar];

[viewController release];

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

}

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

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

[self.view addSubview:secondController.view]; 

[self.view addSubview:toolbar];

[secondController release];

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

}

Любые идеи, которых не хватает в коде.

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Переключатель находится над переменной с именем viewControl, которая, кажется, нигде не определена в коде. Вам нужно будет предоставить нам больше информации, чтобы сделать правильный ответ.

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

Добавьте регистр default: в свой оператор switch, который регистрирует значение, которое вы включаете, например:

switch (viewControl) {
    case 0: {
        //...
        break;
    }
    case 1: {
        //...
        break;
    }
    default: {
        NSLog(@"Uh oh! The value I'm switching on isn't what I expect! viewControl == %d", viewControl);
        break;
    }
}

Это не решит твою проблему, но поможет тебе понять, что происходит.

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

Операторы switch, подобные вашему, предназначены для целочисленных значений (отсюда case: 1,2,3 и т. Д.).Вы даже ничего не передаете методу, когда таймер становится недействительным, поэтому вы можете использовать переключатель с именами классов, случайными данными и т. Д., И он все равно никогда не будет работать.Вместо этого используйте значения BOOLean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...