Two PickerViews in save View issue?

Posted by NextRev on Stack Overflow See other posts from Stack Overflow or by NextRev
Published on 2010-03-20T21:32:46Z Indexed on 2010/03/20 22:01 UTC
Read the original article Hit count: 375

Filed under:
|
|
|
|

I'm trying to have 2 pickerviews in the same view. It works except for two things. If one pickerview has more rows than the other the app crashes when picking an item from the pickerview with more items. Also I created an NSLog for the pickerviews and the console shows that I'm picking two items at once when in fact i'm only dealing with one pickerview. I know it sounds a bit confusing but I'm including all the code. Thank you in advance.

list and list2 are NSMutableArrays

list has 4 items list2 has 5 items

There error:

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSCFArray objectAtIndex:]: index (4) beyond bounds (4)'

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{
    if([thePickerView isEqual:pickerView1 ]){       
        return 1;
    }
    else if([thePickerView isEqual:pickerView2]){ 

        return  1;
    }

    else{
        return 0;
    }
}

-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{

    if([thePickerView isEqual:pickerView1 ]){ 
        return [list count];
    }
    else if([thePickerView isEqual:pickerView2]){       
        return [list2 count];
    }

    else{
        return 0;
    }
}

-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    if([thePickerView isEqual:pickerView1 ]){ 
        return [list objectAtIndex:row];
    }
    else if([thePickerView isEqual:pickerView2]){       
        return [list2 objectAtIndex:row];
    }

    else{
        return 0;
    }

} 

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    NSLog(@"Selected item %@. Index of selected item:%i", [list objectAtIndex:row], row);
    NSLog(@"Selected item %@. Index of selected item:%i", [list2 objectAtIndex:row], row);
    NSLog(@"Selected item %@. Index of selected item:%i", [list3 objectAtIndex:row], row);

if([thePickerView isEqual:pickerView1 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView2 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView3 ]){
//Do Something
}
}

© Stack Overflow or respective owner

Related posts about uipickerview

Related posts about iphone