2012-02-27 58 views
0

开关语句不起作用。使用switch语句更新视图ater计时器失效。在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]; 

} 

任何想法代码中缺少什么。

+2

除了在switch语句中,我没有看到任何对'viewControl'的引用。这个价值是什么?它从哪里来? – UIAdam 2012-02-27 22:12:27

+0

请缩进您的代码,以便阅读。 – Caleb 2012-02-27 22:14:46

+0

您可能会考虑在displayviewsAction中添加一条日志语句以显示“viewControl”设置为的内容。我怀疑这不是你的想法。 – 2012-02-27 22:24:03

回答

2

该开关在名为“viewControl”的变量上,似乎没有在代码中的任何位置定义。你将不得不给我们更多的信息来做出正确的答案。

1

像你这样的开关语句是用于整数值(因此情况是:1,2,3等)。当定时器失效时,您甚至不会将任何内容传递给方法,因此您可以使用带有类名称,随机数据等的开关,但它仍然无法工作。改为使用BOOLean值。

+0

我从来没有使用switch语句,所以如果你能告诉我我到底错在哪里以及如何修复它。 – user1120133 2012-02-27 22:24:20

+1

switch语句只是一种多分支if语句。每个“案例”对应于正在分支的变量的值。 – Perry 2012-02-27 22:52:06

1

一个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; 
    } 
} 

,但它会帮助你找出什么继续。