ios自定义日期、时间、城市选择器
選擇器,我想大家都不陌生,當(dāng)需要用戶去選擇某些范圍值內(nèi)的一個固定值時,我們會采用選擇器的方式。選擇器可以直觀的提示用戶選擇的值范圍、統(tǒng)一信息的填寫格式,同時也方便用戶快速的進(jìn)行選擇,比如對于性別,正常情況下就只有男女兩種情況,那這時候用一個選擇器給用戶進(jìn)行選擇的話,可以避免錯誤數(shù)據(jù)的輸入,也更方便用戶去填寫。再比如需要獲取用戶的生日信息時,采用選擇器的方式可以統(tǒng)一生日的格式,如果讓用戶自行輸入的話,可能會出現(xiàn)各種各樣的生日信息格式,不利于數(shù)據(jù)的存儲,但是采用選擇器的方式的話,用戶可找到對應(yīng)的日期進(jìn)行選擇即可。
在iOS有專門的一個選擇器類UIPickerView,進(jìn)入UIPickerView的頭文件,我們可以發(fā)現(xiàn) UIPickerView直接繼承了UIView,其事件處理通過代理方法完成,所以創(chuàng)建UIPickerView的時候記得簽它的代理UIPickerViewDataSource和UIPickerViewDelegate。其實(shí)它和UITbleView有點(diǎn)像,不過UIPickerView還多了個列屬性,UITbleView我們都很熟了,所以可以對比UITbleView的相關(guān)屬性和代理方法來學(xué)習(xí)記憶UIPickerView。
一. UIPickerView的代理方法
(1)UIPickerViewDataSource對應(yīng)的代理方法有(其代理方法必須要實(shí)現(xiàn)):
返回顯示的列數(shù)
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
返回每一列中需要顯示的行數(shù)
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
(2)UIPickerViewDelegate對應(yīng)的代理方法(其代理方法根據(jù)需求進(jìn)行選擇性實(shí)現(xiàn)):
返回每一列的寬度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;
返回每一列的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component ;
返回UIPickerView控件中指定列的列表項(xiàng)的要顯示的內(nèi)容
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component ;
返回UIView,作為該UIPickerView控件中指定列的指定行的顯示視圖
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view ;
選擇指定列中的指定行
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component ;
二、UIPickerView和UIDatePicker。
UIDatePicker是系統(tǒng)幫我們封裝好的一個時間日期選擇器,繼承于UIControl,UIDatePicker有一定的局限性,因?yàn)樗挥兴姆N顯示樣式:
UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeDateAndTime,
UIDatePickerModeCountDownTimer,
1
2
3
4
如果需求和這四種樣式都不符合的話,那么就沒辦法使用UIDatePicker,比如當(dāng)只需要顯示年、月信息的時候,顯然UIDatePicker沒辦法滿足我們的需求,那這時我們只能通過UIPickerView來自定義自己想要的選擇器。
三、UIPickerView的自定義使用
(1)創(chuàng)建基類繼承于UIView的WXZBasePickView。
我們常見的選擇器的樣式是一個帶透明背景色的view,底部是內(nèi)容的選擇器,有確定和取消按鈕,大致如圖:
?
有需要的下載demo? https://github.com/wxzwork/CustomPickView
轉(zhuǎn)載于:https://www.cnblogs.com/soulDn/p/9967396.html
總結(jié)
以上是生活随笔為你收集整理的ios自定义日期、时间、城市选择器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 293/294 Flip Game I
- 下一篇: laravel5.7的redis配置,一