在前面, 我们使用了UIPickerView试验了几次, 与其他UI控件结合在一起使用的也有, 今天我们就把UIPickerView剥的更深入, 让我们更加好的掌握UIPickerVIew, 下面让我们来看看
1.在.h文件里遵守UIPickerView的代理方法和数据源方法
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
@end
2.在.m文件里声明全局变量
@interface ViewController ()
{
UIPickerView *_pickerView;
NSArray *_arrayOne;
NSArray *_arrayTwo;
}
@end
PS:这两个数组分别是要用来存放UIPickerView的左右两边选择器的内容.
3.实例化UIPickerView
#pragma mark - 添加UIPikerView
- (void)myPikerView
{
// 1.实例化UIPickerView
_pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 250, self.view.frame.size.width, 250)];
[_pickerView setBackgroundColor:[UIColor grayColor]];
// 2.设置UIPickerView的代理方法和数据源方法.
[_pickerView setDelegate:self];
[_pickerView setDataSource:self];
// 3.设置是否显示内容
[_pickerView setShowsSelectionIndicator:YES];
// 4.把UIPickerView添加到self.view
[self.view addSubview:_pickerView];
}
4.添加UIPickerView的数据源方法
// 返回UIPickerView有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
// 返回UIPickerView有多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == 0) {
return _arrayOne.count;
} else {
return _arrayTwo.count;
}
}
5.添加UIPickerView的代理方法
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
return _arrayOne[row];
} else {
return _arrayTwo[row];
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"第一列选中的行数是 %ld,第二列选中的行数是 %ld", [pickerView selectedRowInComponent:0], [pickerView selectedRowInComponent:1]);
NSInteger leftCol = [pickerView selectedRowInComponent:0];
NSInteger rightCol = [pickerView selectedRowInComponent:1];
NSLog(@"%@ ~~~ %@", _arrayOne[leftCol], _arrayTwo[rightCol]);
}
6.定义数组的内容
- (void)myArray
{
_arrayOne = @[@"辰东", @"唐家三少"];
_arrayTwo = @[@"完美世界", @"天火大道", @"神墓"];
}
最终效果:
附件: UIPickerView的代理方法拓展
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 100;
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UIView *views = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
[views setBackgroundColor:[UIColor redColor]];
return views;
}
效果:
好了, 这次我们就讲到这里, 下次我们继续~~