(轉載)UIPickerView選擇“省市區(qū)”

本文旨在為大家提供“干貨”,在文章結尾會提供Demo下載地址。本文、內容簡單,但實用價值高,有需要的自取,并關注我!大牛可繞行。>后續(xù)Richy將定期為大家更新...

縱觀該例子,用到的知識點僅有UIPickerView結合數(shù)據(jù)源的使用,但是Richy花費了很長時間才完成。其中90%的時間用于手動錄入Province.plist(各省市區(qū)的信息),雖然說錄入數(shù)據(jù)的過程參考了網(wǎng)上已公開的現(xiàn)成的Address.plist(PS:非常感謝共享次內容的GG/MM),但是重構plist內部結構依然是個繁重的工程,因此各位客官要體諒Richy的辛勞。


Now,Richy介紹一下實現(xiàn)的思路:

一、UIPickerView的使用

  1. UIPickerView的創(chuàng)建


    01.png
  2. 遵守兩個協(xié)議:


    02.png
  3. 常用各協(xié)議下的方法:


    03.png

4.其他方法:


04.png

二、數(shù)據(jù)源 Province.plist的結構


05.png

關鍵的Key值定義如下:

省:Province;

市:city

區(qū):districts

舉個Demo中的例子幫大家理解,如下圖:


06.png

咱們一起看一下最復雜的一個(前提:熟悉plist的結構),那么其他的就是小case了。

return [self.arrayDS[_provinceIndex][@"citys"][_cityIndex][@"districts"] count];

首先,這行內容代表的涵義是返回第3列的行數(shù);

其次,當操作第3列時說明,第1和2列是確定的,故通過兩個Index記錄其選中的行;

最后,結果即某一省(self.arrayDS[_provinceIndex])中的某一市(self.arrayDS[_provinceIndex][@"citys"][_cityIndex])中的所有區(qū)(self.arrayDS[_provinceIndex][@"citys"][_cityIndex][@"districts"])的總數(shù)量([self.arrayDS[_provinceIndex][@"citys"][_cityIndex][@"districts"] count])。

三、細節(jié)問題處理

  1. 三列之間是緊密相關的,操作第1列時,第2和3列會隨之發(fā)生改變;而操作第2列的時候,第3列會隨之發(fā)生改變,但第1列確實固定的;而操作第3列的時候,第1和2列均固定。

  2. 基于上邊內容,從而決定了你什么時間記錄省市區(qū)的選中Index(eg:_cityIndex = row;),同時也決定了你什么時間重置數(shù)據(jù)(eg: _districtIndex = 0;)以及刷新數(shù)據(jù)展示(-reloadComponent),具體見下圖:

07.png

GitHub:https://github.com/RichyLeo
Demo下載地址:https://github.com/RichyLeo/ProvincePickerView.git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容