IOS中的各种Picker
来源:互联网 发布:机械编程工资待遇 编辑:程序博客网 时间:2024/05/21 10:25
简述
在应用的一些设置中经常要用到一些Picker来快速帮助用户选定取值,一般会用到的有UIDatePicker,UIPickerView以及UIImagePickerController。
初始界面
如图,在搭建好的界面,实现方法来完成各个选择。首先是日期选择
UIDatePicker
主要需要设置的属性有
locale
datePickerMode
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;
在这里,我们也对它的初始日期进行了设置。
对齐事件进行监听即可达到目的,并没有代理协议。
- (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
如果不自定义选取照片视图的话,实现照片或者拍照选取功能十分简单,设置协议就可以快速调用。
UIImagePickerController *imagePC = [[UIImagePickerController alloc] init]; //从照片库中选择图片, 也可以设置相机 imagePC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //允许对图片进行简单的编辑 imagePC.allowsEditing = YES; imagePC.delegate = self; [self presentViewController:imagePC animated:YES completion:nil];
协议方法获取图片并进行设置
- (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稍微要复杂一些。首先初始化和设置属性
- (void)pickerViewAndMethod{ UIPickerView *pickerView = [[UIPickerView alloc] init]; pickerView.delegate = self; pickerView.dataSource = self; //显示选择活动器 pickerView.showsSelectionIndicator = YES; _cityField.inputView = pickerView; _cityField.text = @"北京 - 海淀";}
实现数据源和代理方法,来刷新自身数据和界面。
- (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进行设置的功能就完成了。
demo示例点击打开链接
以上为本篇博客全部内容,欢迎指正和交流。转载注明出处~
- IOS中的各种Picker
- IOS中的各种Picker
- IOS中的各种尺寸
- IOS中的各种尺寸
- iOS中的各种快捷键
- ios中的各种category
- iOS中的各种理论知识
- iOS中的各种手势
- iOS 中的各种锁
- Picker
- Ios中的各种数据储存
- IOS风格的日期控件(Time picker)
- IOS第二十六天——Picker
- IOS UI控件之Picker View
- 《iOS Human Interface Guidelines》——Picker
- iOS开发过程中的各种坑
- 转载:iOS开发过程中的各种tips
- iOS开发过程中的各种tips
- 致有志于金蝶软件研究和实施工作的网友一封信
- 关于Struts2中的ValueStack,ActionContext,OgnlContext的理解之二:Struts2中的OGNL
- 【Struts2】新建一个Struts2工程,初步体验MVC
- 把一个select查询结果插入到一个表(可选指定字段和值实例)
- web工程调用hadoop集群1.2
- IOS中的各种Picker
- 3DShader之移位贴图(Displacement Mapping)
- B/S还是C/S ERP技术向何方发展
- 总结一下ERP .NET程序员必须掌握的.NET技术,掌握了这些技术工作起来才得心应手
- 设计模式原则
- 面向对象设计的设计原则
- PLM与ERP整合逐渐成重要趋势
- PLM潜力解密 传统ERP厂商主导PLM PLM潜力解密 传统ERP厂商主导PLM
- KNOW: BFS & DFS