• 【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提供的接口,简单的方法可能会给用户带来很多小小的优化体验!

  • 相关阅读:
    校园路的伤感
    IBM决赛的相片
    IBM一面blue面筋(D组)
    解读校园路
    learn english
    DoNews.COM确实不错
    ARC使用
    Mac 终端 加tab键索引功能
    制作越狱ios设备ipa包
    objc>JS通信及JS>objc通信
  • 原文地址:https://www.cnblogs.com/pigpigDD/p/3898098.html
Copyright © 2020-2023  润新知