选择器,我想大家都不陌生,当需要用户去选择某些范围值内的一个固定值时,我们会采用选择器的方式。选择器可以直观的提示用户选择的值范围、统一信息的填写格式,同时也方便用户快速的进行选择,比如对于性别,正常情况下就只有男女两种情况,那这时候用一个选择器给用户进行选择的话,可以避免错误数据的输入,也更方便用户去填写。再比如需要获取用户的生日信息时,采用选择器的方式可以统一生日的格式,如果让用户自行输入的话,可能会出现各种各样的生日信息格式,不利于数据的存储,但是采用选择器的方式的话,用户可找到对应的日期进行选择即可。

在iOS有专门的一个选择器类UIPickerView,进入UIPickerView的头文件,我们可以发现 UIPickerView直接继承了UIView,其事件处理通过代理方法完成,所以创建UIPickerView的时候记得签它的代理UIPickerViewDataSource和UIPickerViewDelegate。其实它和UITbleView有点像,不过UIPickerView还多了个列属性,UITbleView我们都很熟了,所以可以对比UITbleView的相关属性和代理方法来学习记忆UIPickerView。

一. UIPickerView的代理方法
(1)UIPickerViewDataSource对应的代理方法有(其代理方法必须要实现):

返回显示的列数
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;

返回每一列中需要显示的行数
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

(2)UIPickerViewDelegate对应的代理方法(其代理方法根据需求进行选择性实现):

返回每一列的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;

返回每一列的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component ;

返回UIPickerView控件中指定列的列表项的要显示的内容
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component ;

返回UIView,作为该UIPickerView控件中指定列的指定行的显示视图
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view ;

选择指定列中的指定行
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component ;

二、UIPickerView和UIDatePicker。
UIDatePicker是系统帮我们封装好的一个时间日期选择器,继承于UIControl,UIDatePicker有一定的局限性,因为它只有四种显示样式:

UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeDateAndTime,
UIDatePickerModeCountDownTimer,
1
2
3
4
如果需求和这四种样式都不符合的话,那么就没办法使用UIDatePicker,比如当只需要显示年、月信息的时候,显然UIDatePicker没办法满足我们的需求,那这时我们只能通过UIPickerView来自定义自己想要的选择器。

三、UIPickerView的自定义使用
(1)创建基类继承于UIView的WXZBasePickView。
我们常见的选择器的样式是一个带透明背景色的view,底部是内容的选择器,有确定和取消按钮,大致如图:

有需要的下载demo  https://github.com/wxzwork/CustomPickView

转载于:https://www.cnblogs.com/soulDn/p/9967396.html

ios自定义日期、时间、城市选择器相关推荐

  1. WPF自定义日期时间控件

    WPF自定义日期时间控件 一.需求分析 二.功能实现 一.需求分析 在工作中遇到的项目中,大部分软件是处于全屏运行状态,这时候就需要在软件的界面上加上日期时间那些,方便用户查看当前时间. 二.功能实现 ...

  2. Android 时间城市——选择器

    这个使用还是挺简单的,如果项目中多次使用的话,感觉还是比较麻烦的,我给封装起来了Guthub上官网地址:https://github.com/Bigkoo/Android-PickerView 依赖 ...

  3. ios swift5 日期时间显示器 UIDatePicker

    文章目录 0.代码 1.Preferred Style, preferredDatePickerStyle图示,ios14.2 .automatic .compact .wheels .inline ...

  4. 过冰点自定义日期时间

    这个可完全自定义日期与时间..... 转载于:https://blog.51cto.com/108151/59792

  5. html5 datepicker ios,iOS DatePicker日期时间选择器【组件】

    日期时间选择,可根据需要设置样式类型:年月日时分.月日时分.年月日.月日.时分,限制最大时间.限制最小时间. 使用: WSDatePickerView *datepicker = [[WSDatePi ...

  6. Go 自定义日期时间格式解析解决方案 - 解决 parsing time xx as xx: cannot parse xx as xx 错误

    最近在解析 Go 的日期数据格式时(mysql 的 datetime 类型)时遇到个问题,在网上搜了很多方案都试了以后发现不可行,于是自己尝试解决后将解决方案发布出来. Go 自身的 time.Tim ...

  7. Go 自定义日期时间格式解析解决方案 - 解决 `parsing time xx as xx: cannot parse xx as xx` 错误

    最近在解析 Go 的日期数据格式时(mysql 的 datetime 类型)时遇到个问题,在网上搜了很多方案都试了以后发现不可行,于是自己尝试解决后将解决方案发布出来. Go 自身的 time.Tim ...

  8. element设置自定义选择年月日:日期时间选择器

    1.需求:需要做一个可以自定义输入时间的选择器 这个时间不需要.因为不要这个时间,就要把后面那个框给隐藏掉,所以在获取焦点时把后面那个框给删除掉.没有想到如果没有弹出这个框就获取不到这个dom元素,会 ...

  9. 【Axure高保真原型】日期时间选择器

    今天和大家分享日期时间下拉列表选择器的原型模板,该模板用中继器结合时间函数制作,所以可以获取真实的日历效果,具体包括哪一年二月份有29天,几号对应星期几,都是真实的.这个原型用Axure原生元件组成, ...

最新文章

  1. 【Sql Server】DateBase-结构化查询基础
  2. android之descendantFocusability用法简析
  3. python asyncio与aiohttp_python链家网异步IO爬虫,使用asyncio、aiohttp和aiomysql
  4. 虚幻4引擎角色蓝图Character的Movement组件学习
  5. EOS 智能合约源代码解读 (4)symbol.hpp
  6. 设计模式之工厂模式(Factory)(3)
  7. MySQL repeat复制函数示例
  8. Zookeeper基础使用机制原理
  9. 知识图谱论文阅读(十六)【WWW2019】Knowledge Graph Convolutional Networks for Recommender
  10. 对XML文件进行的添加、删除、修改、查询操作。
  11. 1112个人赛,最长回文串常见算法讨论
  12. synctoy 自动同步_用SyncToy给硬盘备份保证数据安全,来自微软的馅饼真香
  13. 适合于图像处理方向的SCI期刊杂志列表【转】
  14. UI Maker,界面设计sample
  15. 用netbean搭建第一个struts的web项目
  16. Halo2学习笔记——设计之Proof和Field实现(3)
  17. hdu5442 后缀数组
  18. HTML期末大作业~仿小米商城网页设计模板(HTML+CSS+JavaScript)
  19. 新手小白如何开始网络赚钱?最靠谱的实操方法来了!
  20. C++重温笔记(十一): C++文件操作

热门文章

  1. SVN中检出(check out) 和 导出(export) 的区别
  2. GIS可视性分析概述
  3. C++函数模板Demo - win32 版
  4. Asp.net Eval 学习总结
  5. 图解在反汇编中识别VC++之if-else分支语句
  6. Struts2中的action类
  7. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法
  8. 算法65----字符串
  9. CSS样式表初始化代码
  10. 批处理相对路径51CTO自动领豆(Python)