2012-02-27 4 views
0

Switch 문이 작동하지 않습니다. 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]; 

} 

코드에 누락 된 사항이 있습니다.

+2

switch 문을 제외하고는'viewControl'에 대한 참조를 볼 수 없습니다. 그 가치는 무엇이며 어디서 비롯된 것입니까? – UIAdam

+0

읽기 쉽게 코드를 들여 쓰기하십시오. – Caleb

+0

"viewControl"이 무엇으로 설정되어 있는지 표시하려면 displayviewsAction 내에 로그 문을 추가하는 것이 좋습니다. 나는 그것이 당신이 생각하는 바가 아닌 것으로 의심합니다. –

답변

2

스위치가 코드에서 아무 곳에도 정의되어 있지 않은 것처럼 보이는 "viewControl"이라는 변수를 넘었습니다. 우리는 적절한 답을 내리기 위해 더 많은 정보를 제공해야합니다.

1

사용자와 같은 switch 문은 정수 값 (따라서 대소 문자가 1,2,3 등)을 나타냅니다. 타이머가 무효화 될 때 메서드에 아무 것도 전달하지 않으므로 클래스 이름, 임의의 데이터 등으로 스위치를 사용할 수 있으며 여전히 작동하지 않습니다. BOOLean 값을 대신 사용하십시오.

+0

나는 switch 문을 사용하지 않으므로, 정확히 어디서 잘못되었는지, 어떻게 고칠 수 있는지 알려 주시면 감사하겠습니다. – user1120133

+1

switch 문은 일종의 다중 분기 if 문입니다. 각 "사례"는 분기되는 변수의 값에 해당합니다. – Perry

1

는이 같은에서 전환하는 값을 기록 당신의 switch 문에 default: 경우 추가 :

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

문제가 해결되지 않습니다,하지만 당신은 무엇을 알아내는 데 도움이됩니다 계속.

관련 문제