How to use Pickerview with Uitextfield for input data in IOS

At work recently I faced with the task of creating an interface were a two uipickerview would control the value input for different field .I decided that the interface would be better if for those fields that used a uipickerview it would appear when the user clicked into the textfield.

//HEADER FILE OR .h FILE

Screen Shot 2014-11-19 at 6.12.11 pm

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
<UITextFieldDelegate,UIPickerViewDataSource,UIPickerViewDelegate>
{

UITextField *myTextField;
UIPickerView *myPickerView;
NSArray *pickerArray;
}
@end

//IMPLEMENTATION FILE OR.m FILE
===========

Screen Shot 2014-11-19 at 6.11.39 pm

 

 

-(void)viewDidLoad
{
[super viewDidLoad];
[self addPickerView];
}
-(void)addPickerView{
pickerArray = [[NSArray alloc]initWithObjects:@“Physics”,
@“Chemistry”,@“Mathematics”,@“Biology”,@“History”, nil];
myTextField = [[UITextField alloc]initWithFrame:
CGRectMake(10, 100, 300, 30)];
myTextField.borderStyle = UITextBorderStyleRoundedRect;
myTextField.textAlignment = UITextAlignmentCenter;
myTextField.delegate = self;
[self.view addSubview:myTextField];
[myTextField setPlaceholder:@“Select a Subject”];
myPickerView = [[UIPickerView alloc]init];
myPickerView.dataSource = self;
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] 
initWithTitle:@"Done" style:UIBarButtonItemStyleDone 
target:self action:@selector(done:)];
UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:
CGRectMake(0, self.view.frame.size.height-
myDatePicker.frame.size.height-50, 320, 50)];
[toolBar setBarStyle:UIBarStyleBlackOpaque];
NSArray *toolbarItems = [NSArray arrayWithObjects: 
doneButton, nil];
[toolBar setItems:toolbarItems];
myTextField.inputView = myPickerView;
myTextField.inputAccessoryView = toolBar;

}

Screen Shot 2014-11-19 at 6.11.56 pm

#pragma mark - Text field delegates

-(void)textFieldDidBeginEditing:(UITextField *)textField{
if ([textField.text isEqualToString:@""]) {
[self dateChanged:nil];
}
}
#pragma mark - Picker View Data source
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView 
numberOfRowsInComponent:(NSInteger)component{
return [pickerArray count];
}

#pragma mark- Picker View Delegate

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component{
[myTextField setText:[pickerArray objectAtIndex:row]];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:
(NSInteger)row forComponent:(NSInteger)component{
return [pickerArray objectAtIndex:row];
}

FINAL OUTPUT
iOS Simulator Screen Shot 19-Nov-2014 6.22.17 pm

Scroll to Top

Discover more from CODE t!ps

Subscribe now to keep reading and get access to the full archive.

Continue reading