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

这篇文章是我的【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Hadoop上运行基于RMM中文分词算法的MapReduce程序

原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词算法的MapReduce程序 23条回复我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文&#xff0…

Web服务的调用

1、创建服务引用 例如:天气预报 2、在代码添加引用空间 TvProgram.ChinaTVprogramWebService tpnew TvProgram.ChinaTVprogramWebService(); DataSet dstp.getAreaDataSet();3、引用具体方法 private void comBox1_SelectedIndexChanged(object sender,EventArgs e)…

aref无效 lisp_aref无效 lisp_Common Lisp专题4:数组

1)用make-array创建数组:CL-USER> (make-array 5 :initial-element nil)#(NIL NIL NIL NIL NIL)CL-USER> (make-array 5 :initial-contents (a e i o u))#(A E I O U)CL-USER> (setf arr (make-array 5 :initial-contents (a e i o u)))#(A E I O U)CL-USE…

Visual Studio 快捷键汇总

常见方法: 强迫智能感知:CtrlJ。智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因。 撤销:CtrlZ。除非你是天才,那么这个快捷键也是最常用的。强迫显示参数信息:Ctrl-Shift-空…

nodejs解析apk

项目再github上的目录:https://github.com/chen2009277025/nodejs_apkToolnodejs无可厚非是新兴的后端语言,因为他的开发语言是javascript,javascript语言的自身优势,让nodejs迅速的火遍大江南北。很多的nodejs的开发插件如雨后春…

VC2013 代码图,依赖项关系图,等出错解决办法.

环境WIN10VS2013SQL2015 当VS2013代码图,依赖项关系图等出现 数据库连接错误时 去http://www.microsoft.com/zh-cn/download/details.aspx?id29062 下载 SqlLocalDB.MSI进行安装 怀疑是先装了SQL2015后安装VS2013时默认未安装SqlLocalDB.MSI导致.转载于:https://www.cnblogs.c…

POJ 1330 LCA最近公共祖先 离线tarjan算法

题意要求一棵树上,两个点的最近公共祖先 即LCA 现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出 原理用了并查集和dfs…

deferred Transports Protocols 简单介绍

2019独角兽企业重金招聘Python工程师标准>>> Twisted架构概览 Twisted是一个事件驱动型的网络引擎。由于事件驱动编程模型在Twisted的设计哲学中占有重要的地位,因此这里有必要花点时间来回顾一下究竟事件驱动意味着什么。 事件驱动编程是一种编程范式&a…

java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术Cookie使用HTTPHeader传递数据。Cookie机制定义了两种报头,Set-Cookie报头和Cookie报头。Set-Cookie报头包含于Web服务器的响应头(ResponseHeader)中,Cookie报头包含在浏览器客户端请…

FAT和EXFAT文件系统

源:FAT和EXFAT文件系统转载于:https://www.cnblogs.com/LittleTiger/p/8022450.html

关于easyUI在子页面增加显示tabs的一个问题

关于easyUI在子 在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php 现在说的是在子页面点个按钮也能触发增加子页面的情况。 情景是,在父页面上有个div如: Html代…

java 两个窗口 贴_粘贴子窗体中的多个记录时的子窗体校准错误

我对子窗体上的所有三个事件进行计算以更新主窗体:Private Sub Form_AfterDelConfirm(Status As Integer)Me.Parent.UpdateStundenEnd SubPrivate Sub Form_AfterInsert()Me.Parent.UpdateStundenEnd SubPrivate Sub Form_AfterUpdate()Me.Parent.UpdateStundenEnd …

SDN第二次上机作业

1、安装floodlight 2、生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 3、利用字符界面下发流表,使得‘h1’和‘h2’ ping 不通 4、利用字符界面下发流表,通过测试‘h1’和‘h3’的联通性,来验证openflow的har…

Android保存图片到本地相册

好久没有写东西了。备份下知识吧。免得忘记了 。 首先贴一段代码 -- 这个是先生成一个本地的路径,将图片保存到这个文件中,然后扫描下sd卡。让系统相册重新加载下 。缺点就是只能保存到DCIM的文 件夹下边,暂时不知道怎…

PHP的钩子实现解析

2019独角兽企业重金招聘Python工程师标准>>> 钩子是编程里一个常见概念,非常的重要。它使得系统变得非常容易拓展,(而不用理解其内部的实现机理,这样可以减少很多工作量)。只要有一个钩子样本,能…

writer在java中的意思_Java在FileWriter和BufferedWriter之间的区别

小编典典如果您使用BufferedWriter则效率更高在刷新/关闭之间有多次写入与缓冲区大小相比,写操作较小。在您的示例中,您只有一次写入,因此BufferedWriter只会增加您不需要的开销。这是否意味着第一个示例一个接一个地写入字符,第二…

Ubuntu配置静态IP

进入 /etc/network/interfaces,修改成如下: # interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto ens33iface ens33 inet staticaddress 192.168.1.110netmask 255.255.255.0gateway 192.168.1.1dns-nameserver 8.8.8…

tiny xml 使用总结

这几天在埋头写自己的3D文件浏览器(稍后发布),突发奇想的要把自己的内部格式转化成XML,于是,把以前在研究所时用过的ExPat翻了出来。ExPat是基于事件的XML解释器,速度挺快的,但结构方面有点不敢…

Beta冲刺! Day2 - 砍柴

Beta冲刺! Day2 - 砍柴 今日已完成 晨瑶:大致确定了文章推荐的算法思路(Content-based recommender);理清了不少feature的事宜昭锡:修复了日期选择越界时导致程序崩溃和点击光点返回后,日期选择…

Android版添加phonegap--websocket客户端插件教程

2019独角兽企业重金招聘Python工程师标准>>> 1.在Eclipse中新建Android Project项目chatdemo2.把animesh kumar的websocket-android-phonegap项目java文件打成phonegap-websocket-support.jar包,存放在 android project的libs目录下3.把websocket.js存放…