UIPickerView
2012-04-05 16:23
197 查看
UIPickerView控件也是iPhone中比较常用到的一个控件,它通过转轮界面提供一系列多值选项,它向用户显示信息,也收集用户输入。下面就是一个普通的UIPickerView控件。
UIPickerView里面的组件数和组件里的内容都是由我们在代码里面定制的。要使用UIPickerView就要遵守两种协议,一个是UIPickerViewDelegate,另一种是UIPickerViewDataSource。在iPhone开发中,我们经常会听到协议这个词,协议定义了一组方法,有些方法是必须实现的,有些方法是可选的,就要看你要实现的功能了,通俗点讲,协议就相当一个合同,规定了我们要做什么。
UIPickerViewDelegate协议必须实现的方法有:
pickerView: titleForRow:forComponent,这个方法根据指定的行号返回该行的标题,也就是向用户显示的字符串。
UIPickerViewDataSource协议必须实现的方法有:
1.numberOfComponentsInPickerView,这个方法返回UIPickerView需要多少个组件。
2.pickerView: numberOfRowsInComponent,这个方法返回指定组件包含多少行。
建立一个名为InstaEmail的项目,在InstaEmailViewController.h里代码如下:
在InstaEmailViewController.m里实现两种协议所必须的方法,代码如下:
项目运行起来,截图如上。
UIPickerView里面的组件数和组件里的内容都是由我们在代码里面定制的。要使用UIPickerView就要遵守两种协议,一个是UIPickerViewDelegate,另一种是UIPickerViewDataSource。在iPhone开发中,我们经常会听到协议这个词,协议定义了一组方法,有些方法是必须实现的,有些方法是可选的,就要看你要实现的功能了,通俗点讲,协议就相当一个合同,规定了我们要做什么。
UIPickerViewDelegate协议必须实现的方法有:
pickerView: titleForRow:forComponent,这个方法根据指定的行号返回该行的标题,也就是向用户显示的字符串。
UIPickerViewDataSource协议必须实现的方法有:
1.numberOfComponentsInPickerView,这个方法返回UIPickerView需要多少个组件。
2.pickerView: numberOfRowsInComponent,这个方法返回指定组件包含多少行。
建立一个名为InstaEmail的项目,在InstaEmailViewController.h里代码如下:
#import <UIKit/UIKit.h> @interface InstaEmailViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>{
NSArray *activities_; NSArray *feelings_; } @end
在InstaEmailViewController.m里实现两种协议所必须的方法,代码如下:
- (void)viewDidLoad { [super viewDidLoad]; activities_=[[NSArray alloc]initWithObjects:@"sleeping",@"eating",@"working",@"thinking", @"crying",@"begging",@"leaving",@"shopping",@"hello worlding", nil]; feelings_=[[NSArray alloc]initWithObjects:@"awesome",@"sad",@"happy",@"ambivalent",@"nauseous", @"psyched",@"confused",@"hopeful",@"anxious", nil]; } #pragma mark - #pragma mark Picker Datasource Protocol //返回显示的列数 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 2; } //返回当前列显示的行数 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ if(component==0){ return [activities_ count]; }else{ return [feelings_ count]; } } #pragma mark - #pragma mark Picker Delegate Protocol //设置当前行的内容 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ if(component==0){ return [activities_ objectAtIndex:row]; } else{ return [feelings_ objectAtIndex:row]; } return nil; }
项目运行起来,截图如上。
相关文章推荐
- 创建关联的UIPickerView 显示省市
- 去除UIDatePicker和UIPickerView中间Row上面的分割线
- UITextField点击之后弹出UIPickerView
- UIPickerView实现效果
- uiPickerView 滚动盘
- UIPickerView基本用法
- iOS UIPickerView
- UIPickerView 选取器(滚轮)—IOS开发
- 10-UIKit(UIDatePicker、UIPickerView、UIWebView、Storyboard)
- Swift_UI:(二)、UIPageControl、UISegmentedControl、UISlider、UIProgressView、UIStepper、UIPickerView
- IOS之UIPickerView的使用简单介绍
- 时间处理控件UIDatePicker与UIPickerView
- UIPickerView的使用
- [ios开发技巧之]UIPickerView的数据循环显示
- IOS的UIPickerView 和UIDatePicker
- 代码实现UIPickerView
- UIActionSheet和UIDatePicker以及UIPickerView
- UIPickerView 和 UITextField 键盘的混搭使用
- 猫猫学IOS(二十)UI之UIPickerView_点菜系统
- UIPickerView简单使用 - 点餐