Search code examples
iosobjective-cuipickerview

picker view one component hide and other component unhide


i tired two component in picker view i.e (currency),(id) and showed but my question is how to hide "id" component alone in picker view."currency" in responseArray and "id" in responseArray1.

picker view delegate:

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;{
    return 2;

}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;{
        return [responseArray count];
    }

-(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;{
    //return [responseArray objectAtIndex:row];
    if (component == 0) {
        return [responseArray objectAtIndex:row];
    } else {
        return [responseArray1 objectAtIndex:row];


    }
}

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

    NSLog([responseArray1 objectAtIndex:row]);
    if (component == 0) {
        [pickerView selectRow:row inComponent:1 animated:YES ];
    } else if(component == 1)
    {
        if (row != [pickerView selectedRowInComponent:0])
        {
            [pickerView selectRow:[pickerView selectedRowInComponent:0] inComponent:1 animated:YES];
        }

    }
}

Solution

  • Answer as per comments :

     -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;{
    return 1;
    
    }
    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [responseArray count];
    }
    
    -(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    
    
    return [responseArray objectAtIndex:row];
    
    
    
    }
    
    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    {
    
    NSLog(@"rsponse currency : %@",[responseArray objectAtIndex:row]);
    NSLog([responseArray1 objectAtIndex:row]);
    
    
    
    // You can fetch value from both array using row parameter.
    // You can display currency and id for particular row from here like above
    
    }
    

    You not need to display two component in pickerview. Just display one which you want to show and according to selected row you can fetch respective element from array.

    Hope this will help :)