四. 控件-UIPickerView

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lym594887256/article/details/51589514

应用场景

  1. 一般用在用户注册,或者有时间设置的设置页面;
  2. iOS6 与 iOS7 控件的显示是不同的样式;
    这里写图片描述

简单使用

  1. 设置代理(初始化后)
self.pickerView.delegate = self;
self.pickerView.dateSource = self;
>注意:<UIPickerViewDelgate,UIPickerViewDateSource>
  1. 必须实现的代理方法
//返回有多少列
-(NSInterger)numberOfComponentsInPickerView:(UIPickerView*)pickerView;
//返回每列有多少行
-pickerView:(NSInterger(UIPickerView*)pickerView numberOfR  owinComponent:(NSInteger)compoment;

3.可选代理方法

#pragma mark -UIPickerViewDelegate
// 返回第component列高度
//- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
//{
//    
//    return 100;
//}

// 返回第component列第row行的标题
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (component == 1 && row == 1) {
        return @"bcd";
    }
    return @"abc";
}
// NSAttributedString:给文本添加一些属性,富文本,设置文本的颜色,字体,空心,阴影,图文混排.
//- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component NS_AVAILABLE_IOS(6_0); // attributed title is favored if both methods are implemented

// 返回第component列第row行的控件
//- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;

// 监听UIPickerView选中
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    NSLog(@"%ld %ld",component,row);
}

UIDatePickerView

 // 创建日期选择控件
    UIDatePicker *dateP = [[UIDatePicker alloc] init];

    // 设置日期模式,年月日
    dateP.datePickerMode = UIDatePickerModeDate;

    // 设置地区 zh:中国标识
    dateP.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];

    [dateP addTarget:self action:@selector(dateChamge:) forControlEvents:UIControlEventValueChanged];

    // 自定义文本框的键盘
    self.inputView = dateP;
// 只要UIDatePicker选中的时候调用
- (void)dateChamge:(UIDatePicker *)picker
{
    // 2015-09-06 yyyy-MM-dd
    // 创建一个日期格式字符串对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    self.text = [fmt stringFromDate:picker.date];
}

UIPickerView的重要的代理

// 选中某一行的时候调用
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if (component == 0) { // 滚动省会
        // 记录下选中的省会角标
        _selProvinceIndex = row;

        // 刷新第1列的城市
        [pickerView reloadComponent:1];

        // 让pickerView选中第1列第0行
        [pickerView selectRow:0 inComponent:1 animated:YES];
    }



    // 获取选中的省
    Province *p = self.provinces[_selProvinceIndex];

    // 获取选中的城市
    NSArray *cities = p.cities;

    // 获取第1列选中的行
    NSInteger cityIndex = [pickerView selectedRowInComponent:1];

    // 获取选中的城市
    NSString *cityName = cities[cityIndex];

    // 给文本框赋值
    self.text = [NSString stringWithFormat:@"%@ %@",p.name, cityName];
}

猜你喜欢

转载自blog.csdn.net/lym594887256/article/details/51589514