I am new to IOS i want to show particular array in picker view while i click textfield.I created two text field and two array with one pickerview. i run my project success but fail when i select first textfield second array displaying in picker view and second textfield click its second array in picker view i don't want to second array in first textfield.
Picker view coding:
pktStatePicker = [[UIPickerView alloc] initWithFrame:CGRectZero];
pktStatePicker .delegate = self;
pktStatePicker .dataSource = self;
[ pktStatePicker setShowsSelectionIndicator:YES];
txtText.inputView = pktStatePicker ;
currency1.inputView = pktStatePicker;
// Create done button in UIPickerView
UIToolbar* mypickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)];
mypickerToolbar.barStyle = UIBarStyleBlackOpaque;
[mypickerToolbar sizeToFit];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneClicked)];
[barItems addObject:doneBtn];
[mypickerToolbar setItems:barItems animated:YES];
txtText.inputAccessoryView = mypickerToolbar;
currency1.inputAccessoryView = mypickerToolbar;
}
Picker view delegates and textfield:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == txtText )
{
pktStatePicker = arrMsg;
[pktStatePicker reloadAllComponents];
}
else if (textField == currency1 )
{
pktStatePicker = currencyname1;
[pktStatePicker reloadAllComponents];
}
}
-(void)pickerDoneClicked
{
NSLog(@"Done Clicked");
[txtText resignFirstResponder];
//[currency1 res];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(pickerView.tag == 1){
return arrMsg.count;
}else{
return currencyname1.count;
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(pickerView.tag==1){
return [arrMsg objectAtIndex:row];
}
else{
return [currencyname1 objectAtIndex:row];
}
}
- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(pickerView.tag ==1){
txtText.text = (NSString *)[arrMsg objectAtIndex:row];
}else{
currency1.text = (NSString *)[currencyname1 objectAtIndex:row];
}
}
Where do you set pktStatePicker.tag? By defaults it sets to zero, and you see second array every time. Add to you code
-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
if (textField == txtText )
{
pktStatePicker.tag = 1;
}
else if (textField == currency1 )
{
pktStatePicker.tag = 0;
}
[pktStatePicker reloadAllComponents];
return YES;
}
And delete
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == txtText )
{
pktStatePicker = arrMsg;
}
else if (textField == currency1 )
{
pktStatePicker = currencyname1;
}
[pktStatePicker reloadAllComponents];
}
It's wrong. I think It may help you. I didn't check