2012-02-27 40 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; 
    } 
} 

,但它會幫助你找出什麼繼續。