IOS中的各种Picker


在应用的一些设置中经常要用到一些Picker来快速帮助用户选定取值,一般会用到的有UIDatePicker,UIPickerView以及UIImagePickerController。
 
初始界面
 
 
如图,在搭建好的界面,实现方法来完成各个选择。首先是日期选择
 
UIDatePicker
 
主要需要设置的属性有
locale
datePickerMode
 
[cpp] 
UIDatePicker *datePicker = [[UIDatePicker alloc] init];  
datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hans_cn"];  
datePicker.datePickerMode = UIDatePickerModeDate;  
  
NSString *stdDate = @"1990-01-01";  
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
formatter.dateFormat = @"yyyy-MM-dd";  
[datePicker setDate:[formatter dateFromString:stdDate] animated:YES];  
[datePicker addTarget:self action:@selector(showDate:) forControlEvents:UIControlEventValueChanged];  
  
_dateField.inputView = datePicker;  
_dateField.text = stdDate;  
 
在这里,我们也对它的初始日期进行了设置。
 
对齐事件进行监听即可达到目的,并没有代理协议。
 
[cpp]  
- (void)showDate:(UIDatePicker *)datePicker  
{  
    NSDate *date = datePicker.date;  
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
    formatter.dateFormat = @"yyyy-MM-dd";  
    NSString *outputString = [formatter stringFromDate:date];  
      
    _dateField.text = outputString;  
}  
 
 
 
UIImagePickerController
 
如果不自定义选取照片视图的话,实现照片或者拍照选取功能十分简单,设置协议就可以快速调用。
 
[cpp]  
UIImagePickerController *imagePC = [[UIImagePickerController alloc] init];  
//从照片库中选择图片, 也可以设置相机  
imagePC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
//允许对图片进行简单的编辑  
imagePC.allowsEditing = YES;  
imagePC.delegate = self;  
[self presentViewController:imagePC animated:YES completion:nil];  
 
协议方法获取图片并进行设置
 
[cpp]  
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info  
{  
    const NSString *REditedImageIdentifier = @"UIImagePickerControllerEditedImage";  
      
    UIImage *image = info[REditedImageIdentifier];  
    [_imageButton setImage:image forState:UIControlStateNormal];  
      
    [picker dismissViewControllerAnimated:YES completion:nil];  
}  
 
 
UIPickerView
 
在Component较多的时候,PickerView稍微要复杂一些。首先初始化和设置属性
 
[cpp]  
- (void)pickerViewAndMethod  
{  
    UIPickerView *pickerView = [[UIPickerView alloc] init];  
    pickerView.delegate = self;  
    pickerView.dataSource = self;  
    //显示选择活动器  
    pickerView.showsSelectionIndicator = YES;  
    _cityField.inputView = pickerView;  
    _cityField.text = @"北京 - 海淀";  
}  
 
 
实现数据源和代理方法,来刷新自身数据和界面。
 
[cpp] 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView  
{  
    return rComponentCount;  
}  
  
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component  
{  
    if (component == rProvinceComponent)  
    {  
        return _cityList.count;  
    }  
    else  
    {  
        NSInteger i = [pickerView selectedRowInComponent:rProvinceComponent];  
        NSArray *arr = _cityList[i][@"city"];  
        return arr.count;  
    }  
}  
  
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  
{  
    if (component == rProvinceComponent)  
    {  
        NSString *proName = _cityList[row][@"province"];  
        return proName;  
    }  
    else  
    {  
        NSInteger i = [pickerView selectedRowInComponent:rProvinceComponent];  
        NSString *cityName = _cityList[i][@"city"][row];  
        return cityName;  
    }  
}  
  
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component  
{  
    [pickerView reloadComponent:rCityComponent];  
      
    NSInteger proIndex = [pickerView selectedRowInComponent:rProvinceComponent];  
    NSString *proName = _cityList[proIndex][@"province"];  
      
    NSInteger cityIndex = [pickerView selectedRowInComponent:rCityComponent];  
    NSString *cityName = _cityList[proIndex][@"city"][cityIndex];  
      
    _cityField.text = [NSString stringWithFormat:@"%@ - %@", proName, cityName];  
}  
 
 
数据源来自于自己写的一个简单的Plist文件。一个数组中包含多个字典。
这样一个使用各种Picker进行设置的功能就完成了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp picker是指在uniapp框架使用的选择器组件。它可以在开发者编写的一套代码,通过调用picker组件实现在iOS、Android、Web以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台上的城市选择、日期选择、时间选择等功能。 在使用uniapp制作微信小程序时,可以使用picker组件封装底部选择弹框选择器,实现对自定义确定和取消按钮颜色的支持。这样可以解决微信弹框样式不可自定义的问题,使得选择框的样式与项目主题样式保持一致。 总结来说,uniapp picker是uniapp框架的一个组件,用于实现多平台的选择器功能,并且可以自定义确定和取消按钮颜色。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [uniapp使用picker](https://blog.csdn.net/weixin_46181037/article/details/115670692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用uniapppicker-view封装底部选择弹框选择器,解决微信小程序不可自定义样式问题](https://download.csdn.net/download/lmx15063393957/85416764)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值