2012-01-10 175 views
0

我正在嘗試開發這個應用程序,並且我有一個非常困難的時間。我正在嘗試使用UISegmentedControl加載一組作爲圖像過濾器的UIScrollViews。UISegmentedControl和開關語句的問題

除了由於某種原因,UIScrollViews存在很大的問題(這就是爲什麼每個段中都有一個新的信號),點擊段1加載所有6個UIScrollViews,只允許我滾動第一個。當我選擇最後一個段只有1 UIScrollView加載...

我真的不知道我在這裏做錯了什麼,所以任何建議將是偉大的!

非常感謝,

勞倫斯

~~~~下面的代碼~~~

- (void)layerSelected:(id)sender 
{ 
    int index = filterControl.selectedSegmentIndex; 

switch (index) 
{ 
    case 0: if (scroll == nil) 
      { 
       scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll.pagingEnabled = YES; 
       scroll.delaysContentTouches = NO; 
       scroll.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll setContentOffset:currentPos1]; 
       [self.view addSubview:scroll]; 
       [scroll release]; 
      } 
      else 
      { 
       //Set the position to the correct one 
      } 
    case 1: if (scroll1 == nil) 
      { 
       scroll1 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll1.pagingEnabled = YES; 
       scroll1.delaysContentTouches = NO; 
       scroll1.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll1 addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll1.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll1 setContentOffset:currentPos2]; 
       [self.view addSubview:scroll1]; 
       [scroll1 release]; 
      } 
      else 
      { 
       //Set the position to the correct one 
      } 
    case 2: if (scroll2 == nil) 
      { 
       scroll2 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll2.pagingEnabled = YES; 
       scroll2.delaysContentTouches = NO; 
       scroll2.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll2 addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll2.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll2 setContentOffset:currentPos3]; 
       [self.view addSubview:scroll2]; 
       [scroll2 release]; 
      } 
      else 
      { 
       //Set the position to the correct one 
      } 
    case 3: if (scroll3 == nil) 
      { 
       scroll3 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll3.pagingEnabled = YES; 
       scroll3.delaysContentTouches = NO; 
       scroll3.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll3 addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll3.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll3 setContentOffset:currentPos4]; 
       [self.view addSubview:scroll3]; 
       [scroll3 release]; 
      } 
      else 
      { 
       //Set the position to the correct one 

      } 
    case 4: if (scroll4 == nil) 
      { 
       scroll4 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll4.pagingEnabled = YES; 
       scroll4.delaysContentTouches = NO; 
       scroll4.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll4 addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll4.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll4 setContentOffset:currentPos5]; 
       [self.view addSubview:scroll4]; 
       [scroll4 release]; 
      } 
      else 
      { 
       //Set the position to the correct one 

      } 
    case 5: if (scroll5 == nil) 
      { 
       scroll5 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
       scroll5.pagingEnabled = YES; 
       scroll5.delaysContentTouches = NO; 
       scroll5.userInteractionEnabled = YES; 
       NSInteger viewCount = 15; 
       for (int i = 0; i < viewCount; i++) 
       { 
        CGFloat yOrigin = i * self.view.frame.size.width; 
        UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
        [filterViewOverlay setImage:[filterManager objectAtIndex:i]]; 
        [scroll5 addSubview:filterViewOverlay]; 
        [filterViewOverlay release]; 
       } 
       scroll5.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height); 
       [self.scroll5 setContentOffset:currentPos6]; 
       [self.view addSubview:scroll5]; 
       [scroll5 release]; 
      } 
      else 
      { 
       //Set the position to the correct one 
      } 
} 
} 

回答

0

你錯過了break語句。 Switch在每個case語句結尾處需要一個break語句。否則,無論案例值如何,它都會在首次​​匹配成功後執行所有代碼。即。

switch (soemthing) { 
    case 1: // do something 
     break; 
    case 2: // do something else 
     break; 
    default: 
} 

按照您的期望工作。如果您放棄休息時間,則情況1將執行它下面的所有代碼。