Reputation: 661
I am very new o XCode. I was using Picker VIew and got stuck at one place. I have a Picker View with two Components. And I have three arrays. Array, Array1, Array2.
Now what I want to accomplish is that. When the first object of Array is selected in Component 0, second component gets populated by Array 1. And when second object is selected from Array in first component. Second Component gets reloaded and gets populated by Array2.
I am very confused on how to accomplish this.
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return [Array count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
if (component == 0)
return [Array objectAtIndex:row];
else
return [[ArraysOFArrays objectAtIndex:row]objectAtIndex:0 ];
//ArraysOFArrays = Array1 & Array2
[technologyPicker reloadComponent:1];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
if ((component == 0) && (row ==0))
{
if (component == 1)
{
[Array1 objectAtIndex:0];
}
selectTechnology.text = [technologyData objectAtIndex:row];
[technologyPicker reloadComponent:1];
}
if ((component == 0) && (row ==1))
{
if (component == 1)
{
[Array2 objectAtIndex:0];
}
[technologyPicker reloadComponent:1];
}
}
Upvotes: 2
Views: 1142
Reputation: 2343
I have modified your code try this. Take a global variable "selected" of type int and initialize its value to 0 . And BTW what is this "technologyData"?
No of components
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}
No of Rows in component
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component==0)
return [Array count];
else
{
if(selected==0)
[[ArraysOFArrays objectAtIndex:0]count];
else
[[ArraysOFArrays objectAtIndex:1]count];
}
}
title for row
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
if (component == 0)
return [Array objectAtIndex:row];
else
return [[ArraysOFArrays objectAtIndex:selected]objectAtIndex:row];
//ArraysOFArrays = Array1 & Array2
}
did Select row in a component
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
if (component == 0)
{
if (row == 0)
{
selected=0;
[technologyPicker reloadComponent:1];
}
else
{
selected=1;
[technologyPicker reloadComponent:1];
}
}
else
**selectTechnology.text = [[ArraysOFArrays objectAtIndex:selected]objectAtIndex:row];**
}
Upvotes: 1