#import "ViewController.h"@interfaceViewController()@property(nonatomic,strong)UITextField*pickerViewTextField;@end@implementationViewController@synthesizepickerViewTextField=_pickerViewTextField;-(void)viewDidLoad{[superviewDidLoad];// set the frame to zeroself.pickerViewTextField=[[UITextFieldalloc]initWithFrame:CGRectZero];[self.viewaddSubview:self.pickerViewTextField];UIPickerView*pickerView=[[UIPickerViewalloc]initWithFrame:CGRectMake(0,0,0,0)];pickerView.showsSelectionIndicator=YES;pickerView.dataSource=self;pickerView.delegate=self;// set change the inputView (default is keyboard) to UIPickerViewself.pickerViewTextField.inputView=pickerView;// add a toolbar with Cancel & Done buttonUIToolbar*toolBar=[[UIToolbaralloc]initWithFrame:CGRectMake(0,0,320,44)];toolBar.barStyle=UIBarStyleBlackOpaque;UIBarButtonItem*doneButton=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDonetarget:selfaction:@selector(doneTouched:)];UIBarButtonItem*cancelButton=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCanceltarget:selfaction:@selector(cancelTouched:)];// the middle button is to make the Done button align to right[toolBarsetItems:[NSArrayarrayWithObjects:cancelButton,[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpacetarget:nilaction:nil],doneButton,nil]];self.pickerViewTextField.inputAccessoryView=toolBar;...}
-(void)cancelTouched:(UIBarButtonItem*)sender{// hide the picker view[self.pickerViewTextFieldresignFirstResponder];}-(void)doneTouched:(UIBarButtonItem*)sender{// hide the picker view[self.pickerViewTextFieldresignFirstResponder];// perform some action}
添加代理 UIPickerView
ViewController.m
#pragma mark - UIPickerViewDataSource-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{return1;}-(NSInteger)pickerView:(UIPickerView*)pickerViewnumberOfRowsInComponent:(NSInteger)component{return[yourItemscount];}#pragma mark - UIPickerViewDelegate-(NSString*)pickerView:(UIPickerView*)pickerViewtitleForRow:(NSInteger)rowforComponent:(NSInteger)component{NSString*item=[yourItemsobjectAtIndex:row];returnitem;}-(void)pickerView:(UIPickerView*)pickerViewdidSelectRow:(NSInteger)rowinComponent:(NSInteger)component{// perform some action}