2015笔记——省市区Picker
最近做了一个省市区的pickerView,真的是大费周章啊。
首先:
从本地plist文件读取省市区的数据

分析了数据的类型,得到结果如下:

总的是一个字典dict,字典dict中有33个键值对,对应的key是33个省(直辖市)的数据,该数据是数组。数组中仅有一个字典元素A,字典A中对应着各个市区的数据。字典A中的全部key是该省的全部市区的名字,value是数组,对应该市的全部地区。
声明这几个属性:
ProvinceArray,CityArray,AreaArray 和SelectArray(单元素数组,该元素为字典)。分别存放省份的数据,城市的数据,地区的数据和选中省份的数据。
ProvinceIndex,CityIndex,AreaIndex。分别为选中的省市区的index。
然后就是创建PickerView了:

创建好了之后,就是实现代理方法了:


最最关键的就是当picker选中了某一行时:
如果是左侧的轮子,则说明你滑动了省份的轮子,此时:
要从ProvinceArray中获取到省份的名称,然后去dict字典中获取到对应的数组数据。将SelectedArray刷新为选中省份的数据数组,然后根据SelectArray依次取出市区的CityArray,同时也刷新地区的AreaArray。同时设置ProvinceIndex为row,CityIndex为0,AreaIndex为0。
如果是中间的轮子,则说明你滑动的是城市的轮子,此时:
从SelectArray中获取到城市的CityArray,同时也刷新地区的AreaArray。同时设置CityIndex为row,AreaIndex为0。
如果是右边的轮子,则说明滑动的是地区的轮子,此时:
只刷新界面就好,同时设置AreaIndex为row。
然后就出效果了啦:

有没有觉得Picker显示的文本效果不全,看起来不爽?
嗯,我也是这么觉得的。
然后找到了这么个神技:

哈哈,看效果:

有没有那么点心动呢?加油!效果棒棒哒~