为UIPickerView使用for循环

时间:2014-01-08 05:31:52

标签: ios iphone objective-c uipickerview

我是新来的,我在XCODE上的一些iPhone应用程序上弄脏了。我目前正在创建一个应用程序,但我被困在一个涉及pickerview的特定部分。这是代码。

        - (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循环?此外,有人可以帮我解决这个困境吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分: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;
}