首先要在一个View里面创建UIPickerView.下面是简单的创建和使用
// 设置左上角取消按钮
UIButton *cancleBtn = [UIButton new];
[cancleBtn setTitle:@"取消" forState:UIControlStateNormal];
[cancleBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
cancleBtn.titleLabel.font = [UIFont systemFontOfSize:16];
[cancleBtn addTarget:self action:@selector(cancle) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:cancleBtn];
[cancleBtn makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(15);
make.left.equalTo(self).offset(15);
}];
// 设置右上角确定按钮
UIButton *confirmBtn = [UIButton new];
[confirmBtn setTitle:@"确定" forState:UIControlStateNormal];
[confirmBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
confirmBtn.titleLabel.font = [UIFont systemFontOfSize:16];
[confirmBtn addTarget:self action:@selector(confirm) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:confirmBtn];
[confirmBtn makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(15);
make.right.equalTo(self).offset(-15);
}];
// 设置提示语
UILabel *titleView = [UILabel new];
titleView.text = @"请选择下列内容";
titleView.textColor = [UIColor lightGrayColor];
titleView.font = [UIFont systemFontOfSize:15];
[self addSubview:titleView];
[titleView makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self);
make.top.equalTo(cancleBtn.bottom).offset(15);
}];
// 设置UIPickerView
UIPickerView *picker = [UIPickerView new];
picker.backgroundColor = [UIColor whiteColor];
picker.dataSource = self;
picker.delegate = self;
[self addSubview:picker];
[picker makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(cancleBtn);
make.right.equalTo(confirmBtn);
make.top.equalTo(titleView.bottom).offset(15);
make.bottom.equalTo(self).offset(-10);
}];
/**
取消
*/
- (void)cancle
{
[self dismiss];
}
/**
确认
*/
- (void)confirm
{
if ([self.delegate respondsToSelector:@selector(pickerViewDidSelectString:)]) {
[self.delegate pickerViewDidSelectString:self];
}
[self dismiss];
}
#pragma mark - UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1; // 组数
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.dataSource.count; // 行数
}
#pragma mark - UIPickerViewDelegate
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 40; // 行高
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [self.dataSource objectAtIndex:row]; // 每行显示的数据
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
_pickerString = [self.dataSource objectAtIndex:row]; // 把选中的行传给只读的_pickerString
}
网友评论