2014-01-08 63 views
0

我在這裏是新的,我在XCODE上的一些iPhone應用程序上弄髒我的手。我目前正在創建一個應用程序,但我被困在涉及pickerview的特定部分。這是代碼。使用for循環的UIPickerView

 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ 
      if ([pickerView tag] == 0){ 
       return [firstColumn count]; 
      } 
      else if ([pickerView tag] == 1){ 
       return [OnFirstMin count]; 
       return [OnSecMin count]; 
       return [OnSecSec count]; 
       return [OnFirstSec count]; 
      } 
      else { 
       return [OffFirstMin count]; 
       return [OffSecMin count]; 
       return [OffFirstSec count]; 
       return [OffSecSec count]; 
      } 

      return 0; 
     } 

     -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 
      if([pickerView tag] == 0){ 
       if(component == FIRST){ 
        return [firstColumn objectAtIndex:row]; 
       } 
      } 
      else if ([pickerView tag] == 1){ 
       if(component == ON1){ 
        return [OnSecMin objectAtIndex:row]; 
       } 
       else if (component == ON2){ 
        return [OnFirstMin objectAtIndex:row]; 
      } 
       else if (component == ON3){ 
        return [OnSecSec objectAtIndex:row]; 
       } 
       else { 
        return [OnFirstSec objectAtIndex:row]; 
       } 
      } 
      else { 
       if(component == OFF1){ 
        return [OffSecMin objectAtIndex:row]; 
       } 
       else if (component == OFF2){ 
        return [OffFirstSec objectAtIndex:row]; 
       } 
       else if (component == OFF3){ 
        return [OffSecSec objectAtIndex:row]; 
       } 
       else { 
        return [OffFirstSec objectAtIndex:row]; 
       } 
      } 

      return 0; 

    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
     if ([pickerView tag] == 0){ 
      if(sets == TRUE && reps != TRUE){ 
       numofsets = row; 
       SetsTextField.text = [firstColumn objectAtIndex:row]; 
      } 
      else{ 
       numofreps = row; 
       RepsTextField.text = [firstColumn objectAtIndex:row]; 
      } 
     } 
     else if ([pickerView tag] == 1){ 
      if(component == ON1){ 
       onsecmin = row; 
      } 
      else if (component == ON2){ 
       onfirstmin = row; 
      } 
      else if (component == ON3){ 
       onsecsec = row; 
      } 
      else { 
       onfirstsec = row; 
      } 
     } 
     else { 
      if (component == OFF1){ 
       offsecmin = row; 
      } 
      else if (component == OFF2){ 
       offfirstmin = row; 
      } 
      else if (component == OFF3){ 
       offsecsec = row; 
      } 
      else { 
       offfirstsec = row; 
      } 
     } 
    } 

    - (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    firstColumn = [[NSMutableArray alloc] init]; 
    for(i=0; i<=30; i++){ 
     [firstColumn addObject: [NSString stringWithFormat:@"%d", i]]; 
    } 

    OnSecMin = [[NSMutableArray alloc] init]; 
    OnFirstMin = [[NSMutableArray alloc] init]; 
    for(j=0; j<60; j++){ 
     [OnSecMin addObject:[NSString stringWithFormat:@"%i", j]]; 
     [OnFirstMin addObject: [NSString stringWithFormat:@"%i", j]]; 
    } 


    OnSecSec = [[NSMutableArray alloc] init]; //Part where I need help. 
    k =0; 
    while (k<60){ 
    [OnSecSec addObject: [NSString stringWithFormat:@"%i",k]]; 
    k = k+15; 
    } 


    PickerViewSetsRepsContainer.frame = CGRectMake(0, 600, 320, 206); 
    PickerViewOnContainer.frame = CGRectMake(0, 610, 320, 206); 
    PickerViewOffContainer.frame = CGRectMake(0, 620, 320, 206); 


} 

因此,對於OnSecSec,我希望行顯示該組件的0,15,30和45。但是,當我運行它時,應用程序被中止。但是,當我將該部分更改爲for循環時,就像我爲OnSecMin和OnFirstMin所做的那樣,它可以工作。我怎麼不能像上面那樣使用一個while循環?另外,有人可以幫助我解決這個難題嗎?非常感謝您提前給予的幫助!

+0

在'numberOfRowsInComponent',多'return'報表一前一後沒有意義。只有那些代碼塊中的第一個'return'纔會執行(一個'return'語句在那裏結束方法執行)。如果你想基於'component'返回不同的計數,可以使用'switch'或者一系列'if'語句,然後執行返回值和分量值。 – Anna

回答

0

試試這個

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
return 1050; 
} 



- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 

NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d", component]; 
NSArray *array = [self valueForKey:arrayName]; 
[arrayName release]; 
UIImage *image = [array objectAtIndex:row%7]; 

if (!view){ 
    view = [[[UIImageView alloc] init] autorelease]; 
} 
[(UIImageView*)view setImage:image]; 
return view; 
}