【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
總結
以上是生活随笔為你收集整理的【iOS开发每日小笔记(一)】UIPickerView 自动选择某个component的某个row的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebApi个人理解概要
- 下一篇: Visual Studio 快捷键汇总