这篇文章是我的【iOS开发每日小笔记】系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧。它们可能会给用户体验、代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下。90%的作用是帮助自己回顾、记忆、复习。

今天在项目中遇到这样一个小问题:我使用UIPickerView,获取用户选择的时间,时间分为小时和分钟两栏,而且要求不能选0小时0分钟(也就是最小值是0小时1分钟)。

一开始我的做法是,当用户选择好时间后,点击一个“下一步”按钮,此时判断用户选择的时间,如果是0小时0分钟,则给出提示,“请重新设置时间”。这是一种比较常规的做法。但当我的项目PL看到后,对我说,是否能优化一下,做成用户选择0小时0分钟时,自动的将picker上0分钟改为选择1分钟?我说:“把你要抄的APP拿来给我看吧”,PL掏出手机,我看到了他所说的效果。(其实后半段是个段子啦O(∩_∩)O哈哈哈~)。

效果图:

解释一下:假设左边为小时,可选的为0小时和1小时,右边为分钟,可选0到59分钟。用户只能选0小时1分钟到1小时59分钟里的每一个可选搭配。那么,现在如果用户选择了0小时0分钟,那么0分钟将自动跳转为1分钟。如果用户选的是1小时0分钟,此时再将1小时改为0小时,那么0分钟也将自动转为1分钟,总之就是不让你选0小时0分钟。这样做的好处是,省去了用户点击“请重新设置时间”的AlertView警告框。是一种人性化的用户体验的提升!(不得不说PL的事业就是高我一筹啊,呵呵。。。)

好了现在说实现,我为此做了个简单的Demo,放在了这里(https://github.com/pigpigdaddy/PickerAdvanceDemo)请看官斧正!

其实还真是很简单

关键的代码几行:

 1 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
 2 {
 3     if (component == 0) {
 4         self.hour = row;
 5     }else{
 6         self.minute = row;
 7     }
 8     if ((self.hour == 0 && component == 1 && row == 0) || (self.minute == 0 && component == 0 && row == 0)) {
 9         [pickerView selectRow:1 inComponent:1 animated:YES];
10     }
11
12 }

其中两个属性@property:

1 @property (nonatomic, assign) NSInteger hour;
2 @property (nonatomic, assign) NSInteger minute;

用来记录选中的小时和分钟。

这个逻辑真的很简单,不用我一行行解释了。

其实本文就一个观点:有时候,站在用户的角度想想,是否我们的人机交互体验可以更好?利用iOS提供的接口,简单的方法可能会给用户带来很多小小的优化体验!

转载于:https://www.cnblogs.com/pigpigDD/p/3898098.html

【iOS开发每日小笔记(一)】UIPickerView 自动选择某个component的某个row相关推荐

  1. 【iOS开发每日小笔记(二)】gitHub上的开源“瀑布流”使用心得

    这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己 ...

  2. 【iOS开发每日小笔记(七)】UITextView UITextField 检测并过滤Emoji表情符号

    这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己 ...

  3. 【课程设计】UWP 开发入门小笔记(1)

    UWP 开发入门小笔记(1) 零.介绍 一.系列介绍[p1] 二.创建第一个属于自己的UWP应用[p2] (一)一个button的属性: (二)修改属性的三种方法 (三)字号(以后会细讲) 三.UWP ...

  4. iOS开发的学习笔记

    引言 之前做过半年的iOS开发,从完全不懂的移动开发的菜鸟,到完成前端UI开发的菜鸟,做的一些笔记,希望对大家有用,也希望这些总结的东西对以后会有作用. 开发环境 iOS的系统框架分为四个层次: 核心 ...

  5. IOS开发辅助小工具

    现在做IOS开发,有时想看一下应用下的文件及目录是什么样的,所有就有了前面文章中的小工具mini文件系统: 又有时候,不仅仅是开发,测试也会想去了解下当前数据库内,存的数据是什么情况,所以就有了前面文 ...

  6. iOS开发实战小知识点(四)

    一. iOS 连续多次 Present VC,dismiss 之后可能异常 记住: 谁present 谁dismiss. 我们习惯都是在presented VC直接dismiss的,一般不会出现问题, ...

  7. uni开发微信小程序自定义相机自动检测(人像+身份证)

    之前开发过微信小程序自定义相机拍照检测人像和身份证检测.一直期望写篇文章记录一下,趁现在有点时间,总结一下. 需求点: 1.能够自定拍摄人像 2.能够自动拍摄身份证正面照 3.识别身份证并且和人脸照比 ...

  8. iOS开发实战小知识点(五)——获取JS meta异常

    ####在开发中遇见一个问题: 获取H5某个meta的值,在iOS 10(包括)系统以上可以正常获取,但是在iOS 10系统以下获取meta值返回为nil. #####代码如下: NSString * ...

  9. IOS开发之小实例--UIImagePickerController

    摘自:http://www.cnblogs.com/goodboy-heyang/p/5403947.html 前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门 ...

最新文章

  1. Web充斥着存在漏洞的过期JavaScript库
  2. 【转载】使用javassist动态注入代码
  3. 实例演示如何在spring4.2.2中集成hibernate5.0.2并创建sessionFactory
  4. c语言和其他高级语言一样也要经过编译,C语言和其他高级语言的最大的区别是什么?...
  5. 防范sql注入式攻击(Java字符串校验,高可用性)
  6. html-edm(邮件营销)编写规则
  7. Cloud for Customer UI designer自动生成的一些模型
  8. python中如何安装django库_python安装好django库,新建django项目
  9. leetcode1343. 大小为 K 且平均值大于等于阈值的子数组数目(队列)
  10. 北京重磅发布:杰青、优青放宽女性年龄限制,基金人才评审“同等条件下女性优先”...
  11. corn表达式的简单使用
  12. c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象
  13. SPSS可信度数据分析
  14. Verilog 基本电路1-与或非,异或门
  15. 爬虫入门经典(十六) | 一文带你爬取斗鱼主播相关信息
  16. [转] 一篇不错的Perl-LWP文档
  17. MySQL取离当前时间最近的记录
  18. C# managed, unmanaged, unsafe 的比较
  19. Tor 和I2P 网络正遭大规模DDoS 攻击
  20. Java中String转为Long

热门文章

  1. 首款鸿蒙系统终端n,荣耀智慧屏正式发布,首款搭载鸿蒙系统终端,家庭C位新选择...
  2. webase crud查看所有表_Laravel-Gii 可视化代码生成工具 CRUD +GUI
  3. linux c实现mypwd
  4. 【C++ grammar】抽象、封装与this指针
  5. 8253译码电路设计以及初始化编程讲解
  6. 使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符
  7. ffmpeg 命令过滤器裁剪
  8. nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
  9. jbod ugood 磁盘驱动状态_如何检查Mac磁盘空间,mac磁盘空间其他怎么清理
  10. exar 带容隔离_带有美白功效的6款隔离霜 美白隔离两不误