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

从这篇文章开始我将会把每天在开发过程中遇到的,可以用很短的文章、很小的demo演示解释出来的小心得小技巧,分享在【iOS开发每日小笔记】这个分类中。该分类的文章,内容涉及的知识点可能是很简单的、或是用很短代码片段就能实现的,但在我看来它们会给用户体验、代码效率得到一些提升,记录在这里,90%的作用是帮助自己回顾、记忆、复习。如果看官觉得太easy,可以选择:1,移步【iOS探究】分类,对那里的文章进行斧正;2,在本文的评论里狠狠吐槽,再关掉页面!感谢!

 

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

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

效果图:

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

解释一下:假设左边为小时,可选的为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提供的接口,简单的方法可能会给用户带来很多小小的优化体验!

【iOS开发每日小笔记(一)】UIPickerView 自动选择某个component的某个row,布布扣,bubuko.com

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

上一篇:(转)Android系统自带样式(@android:style/)


下一篇:Xamarin开发Android时Visual Studio 2012没有智能提示解决办法