I have 2 picker views: statePicker
and providerPicker
. I have populated the values of arrays for both picker views (stateNames
for statePicker
, providerNames
for providerPicker
).
My problem is, I have to show a value in providerPicker
based on statePicker
's selected value. For example, if i select Tamilnadu
in statePicker
means that providerPicker
automatically should show TNEB
. Similarly, KSEB
for Karnataka
.
This is my code:
DetailDeviceViewController.h
#import <UIKit/UIKit.h>
@interface DeviceDetailViewController : UIViewController<UIPickerViewDelegate, UIPickerViewDataSource>
@property(strong,nonatomic) UIPickerView *statePicker;
@property(strong,nonatomic) UIPickerView *providerPicker;
@property (strong, nonatomic) NSArray *stateNames;
@property (strong, nonatomic) NSArray *providerNames;
@end
DetailDeviceViewController.m
#import "DeviceDetailViewController.h"
@interface DeviceDetailViewController ()
@end
@implementation DeviceDetailViewController
@synthesize stateNames,providerNames,statePicker,providerPicker;
- (void)viewDidLoad
{
[super viewDidLoad];
//Array declaration
stateNames = [[NSArray alloc]initWithObjects:@"Tamilnadu",@"Karnataka", nil];
providerNames =[[NSArray alloc]initWithObjects:@"TNEB",@"KSEB",nil];
//statePicker
statePicker = [[UIPickerView alloc]initWithFrame:CGRectMake(50, 50, 100, 200)];
[statePicker setDelegate:self];
[statePicker setDataSource:self];
statePicker.showsSelectionIndicator =YES;
[self.view addSubview:statePicker];
//providerPicker
providerPicker = [[UIPickerView alloc]initWithFrame:CGRectMake(50, 150, 100, 200)];
[providerPicker setDelegate:self];
[providerPicker setDataSource:self];
providerPicker.showsSelectionIndicator =YES;
[self.view addSubview:providerPicker];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if([pickerView isEqual:statePicker])
{
return 1;
}
else
{
return 1;
}
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if([pickerView isEqual:statePicker])
{
return [stateNames count];
}
else
{
return [providerNames count];
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if ([pickerView isEqual:statePicker])
{
return [stateNames objectAtIndex: row];
}
else
{
return [providerNames objectAtIndex: row];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
The UIPickerViewDelegate
protocol contains the method:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
When a row is selected, this method will be called.