在界面上实现一个UIPickerView:
1、新建一个 singleViewApplication,在 xxxViewController.m文件中:
1 @interface moboViewController ()
2 @property (nonatomic, strong) UIPickerView *picker;
3 @end
2、在 -(void)viewDidLoad方法中,实现:
- (void)viewDidLoad
{
[super viewDidLoad];
//实例化
self.picker = [[UIPickerView alloc]init];
//位置
self.picker.center = self.view.center;
//添加到 view
[self.view addSubview:self.picker];
}
3、CMD+R 跑起来:
发现是空白!为什么呢?我们进UIPickerView的头文件看一看,按住CMD点击UIPickerView,我们发现:
1 @protocol UIPickerViewDataSource, UIPickerViewDelegate;
哈哈!是因为我们还没有遵守TA的 数据源协议和代理方法 呢!
4、那我们遵守 数据源和 代理协议,在 controller.m文件中的 @interface 部分后面,来遵守协议:
1 @interface moboViewController ()<UIPickerViewDelegate,UIPickerViewDataSource> //遵守协议
2 @property (nonatomic, strong) UIPickerView *picker;
3 @end
5、在 -(void)viewDidLoad 中我们设置 代理 和数据源为 self:
1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 //实例化
6 self.picker = [[UIPickerView alloc]init];
7
8 //设置代理
9 self.picker.delegate = self;
10
11 //设置数据源
12 self.picker.dataSource = self;
13
14 //位置
15 self.picker.center = self.view.center;
16
17 //添加到 view
18 [self.view addSubview:self.picker];
19
20 }
6、实现数据源和代理方法:
//返回组数,我们直接来返回2组好了。
1 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
2 {
3 if ([pickerView isEqual:self.picker]) { //如果传进来的pickerview是刚实现的picker就返回2
4 return 2;
5 }
6
7 return 0; //如果不是就返回0
8 }
//返回每组的数据的行数,10行好了。
1 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
2 {
3 if ([pickerView isEqual:self.picker]) { //如果传进来的pickerview是刚实现的picker就返回10
4 return 10;
5 }
6
7 return 0;//如果不是就返回0
8 }
1 /*
2 实现代理方法
3 */
4
5 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
6 {
7 if ([pickerView isEqual:self.picker]) {
8
9 if (component == 0) {
10 return [NSString stringWithFormat:@"A %d", row+1];
11 }
12 else if(component ==1){
13 return [NSString stringWithFormat:@"B %d", row+1];
14 }
15
16 }
17 return 0;
18 }
7、CMD+R,跑起来!