UIPickerView简单选择器的基本使用

//创建一个类,实现UIPickerView的基本功能

#import "PickerViewController.h"

//  遵守 UIPickerViewDataSource,UIPickerViewDelegate协议

@interface PickerViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

//  声明一个简单选择器

@property (nonatomic,strong) UIPickerView *picker;

//  picker第一列数据的数据源数组

@property (nonatomic,strong) NSMutableArray *firstList;

//  picker第二列数据的数据源数组

@property (nonatomic,strong) NSMutableArray *secondList;

//  用于显示简单选择器上选择的内容

@property (nonatomic,strong) UILabel *showLable;

//  picker选择完点击按钮用于更新lable上的数据

@property (nonatomic,strong) UIButton *button;

//  picker第一列选择的数据

@property (nonatomic,copy) NSString *firstStr;

//  picker第二列选择的数据

@property (nonatomic,copy) NSString *secondStr;

@end

@implementation PickerViewController

//  picker的懒加载,用于picker的初始化和设置

- (UIPickerView *)picker{

    if (!_picker) {

        self.picker = [[UIPickerView alloc] initWithFrame:CGRectMake(50, 100, self.view.bounds.size.width - 100, 40)];

        _picker.shouldGroupAccessibilityChildren = YES;

        _picker.delegate = self;

        _picker.dataSource = self;

    }

    return _picker;

}

- (UIButton *)button{

    if (!_button) {

        self.button = [UIButton buttonWithType:UIButtonTypeCustom];

        _button.frame = CGRectMake(150, 350, self.view.bounds.size.width - 300, 30);

        [_button setTitle:@"确认" forState:UIControlStateNormal];

        [_button addTarget:self action:@selector(handleButtonAction:) forControlEvents:UIControlEventTouchUpInside];

        _button.backgroundColor = [UIColor cyanColor];

    }

    return _button;

}

- (void)handleButtonAction:(UIButton *)sender{

    self.showLable.text = [NSString stringWithFormat:@"%@ %@",self.firstStr,self.secondStr];

}

//  显示picker的选择数据

- (UILabel *)showLable{

    if (!_showLable) {

        self.showLable = [[UILabel alloc] initWithFrame:CGRectMake(50, 300, self.view.bounds.size.width - 100, 40)];

        _showLable.backgroundColor = [UIColor yellowColor];

        _showLable.textAlignment = NSTextAlignmentCenter;

        _showLable.text = @"1 1";

    }

    return _showLable;

}

//  数据源的设置

- (NSMutableArray *)firstList{

    if (!_firstList) {

        self.firstList = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil];

    }

    return _firstList;

}

- (NSMutableArray *)secondList{

    if (!_secondList) {

        self.secondList = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil];

    }

    return _secondList;

}

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

//  在view上添加控件

    [self.view addSubview:self.picker];

    [self.view addSubview:self.button];

    [self.view addSubview:self.showLable];

//  给lable上的数据初始化

    self.firstStr = @"1";

    self.secondStr = @"1";

}

#pragma mark UIPickerViewDelegate

//pickerView的列数

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 2;

}

//返回每一列元素的个数

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

    if (component == 0) {

        return self.firstList.count;

    }

    return self.secondList.count;

}

//返回每一列的宽度

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{

    return 50;

}

//返回每一列中每行的元素

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    if (component == 0) {

        return self.firstList[row];

    } else {

        return self.secondList[row];

    }

}

//把数组中对应选择的行的字符串赋值字符串属性用于lable的显示

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    if (component == 0) {

        self.firstStr = self.firstList[row];

    } else {

        self.secondStr = self.secondList[row];

    }

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

@end

原文地址:https://www.cnblogs.com/wangguimin/p/4676075.html