UIDatePickerView和UIPickerView

2016-10-15  本文已影响248人  NateLam

用于选择日期, 可以选择显示是年月日还是具体时间都包含
继承于UIPickerView, 但是不用像UIPickerView一样签代理, 但必须先new, 再设置frame, 两句必须分开;
而且要想实时更新界面的值必须添加target事件

主要就是下面这三个方法, 如需要的时候.hidden = NO即可

#pragma mark - 懒加载
- (UIDatePicker *)datePicker{

    if (!_datePicker) {
        _datePicker = [UIDatePicker new];
        _datePicker.frame = CGRectMake(0, SCREEN_HEIGHT - 200 * SCALE_HEIGHT, SCREEN_WIDTH, 200 * SCALE_HEIGHT);
        _datePicker.datePickerMode = UIDatePickerModeDate; // 设置模式 这里是 年月日 没有上下午
        _datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"]; // 设置地区 这里是
        [_datePicker addTarget:self action:@selector(rollAction:) forControlEvents:(UIControlEventValueChanged)];
        [self.view addSubview:_datePicker];
    }
    return _datePicker;
}

#pragma mark birthFordatter
- (NSDateFormatter *)birthFordatter{
    if (!_birthFordatter) {
        _birthFordatter = [NSDateFormatter new];
        _birthFordatter.dateFormat = @"YYYY-MM-dd";
    }
    return _birthFordatter;
}

#pragma mark  监听滚动的方法   滚动日期键盘时候走的方法 
- (void)rollAction:(UIDatePicker *)sender{

//    NSLog(@"%@", [self.birthFordatter stringFromDate:sender.date]);
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:3 inSection:0];
    NAMineAccountTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
    cell.labelOfContent.text = [self.birthFordatter stringFromDate:sender.date];
}

-----------------------我是分割线, 下面说UIPickerView------------------------

不用设定frame

#pragma mark genderPickerView
- (UIPickerView *)genderPickerView{
    if (!_genderPickerView) {
        _genderPickerView = [UIPickerView new];
        _genderPickerView.delegate = self;
        _genderPickerView.dataSource = self;
        [self.view addSubview:_genderPickerView];
    
        _genderPickerView.hidden = YES;
    }
    return _genderPickerView;
}

UIPickerView, 需要签俩协议并实现一些协议方法

协议方法

#pragma mark - UIPickerViewDelegate
#pragma mark 列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}
#pragma mark 每列多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 3;
}

#pragma mark pickerView内容
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    //    NSArray *countArray =self.foodNameArray[component];
    //    NSString *rowString =countArray[row];
    //    return  rowString;
    return _mArrOfGender[row];
}
#pragma mark pickerView滚动方法
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
    NAMineAccountTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
    cell.labelOfContent.text = _mArrOfGender[row];
}
上一篇下一篇

猜你喜欢

热点阅读