最近做了一个省市区的pickerView,真的是大费周章啊。
首先:
从本地plist文件读取省市区的数据
屏幕快照 2015-11-20 09.04.21.png分析了数据的类型,得到结果如下:
屏幕快照 2015-11-20 09.11.30.png总的是一个字典dict,字典dict中有33个键值对,对应的key是33个省(直辖市)的数据,该数据是数组。数组中仅有一个字典元素A,字典A中对应着各个市区的数据。字典A中的全部key是该省的全部市区的名字,value是数组,对应该市的全部地区。
声明这几个属性:
ProvinceArray,CityArray,AreaArray 和SelectArray(单元素数组,该元素为字典)。分别存放省份的数据,城市的数据,地区的数据和选中省份的数据。
ProvinceIndex,CityIndex,AreaIndex。分别为选中的省市区的index。
然后就是创建PickerView了:
屏幕快照 2015-11-20 09.22.54.png创建好了之后,就是实现代理方法了:
屏幕快照 2015-11-20 09.25.14.png 屏幕快照 2015-11-20 09.25.53.png最最关键的就是当picker选中了某一行时:
如果是左侧的轮子,则说明你滑动了省份的轮子,此时:
要从ProvinceArray中获取到省份的名称,然后去dict字典中获取到对应的数组数据。将SelectedArray刷新为选中省份的数据数组,然后根据SelectArray依次取出市区的CityArray,同时也刷新地区的AreaArray。同时设置ProvinceIndex为row,CityIndex为0,AreaIndex为0。
如果是中间的轮子,则说明你滑动的是城市的轮子,此时:
从SelectArray中获取到城市的CityArray,同时也刷新地区的AreaArray。同时设置CityIndex为row,AreaIndex为0。
如果是右边的轮子,则说明滑动的是地区的轮子,此时:
只刷新界面就好,同时设置AreaIndex为row。
然后就出效果了啦:
Simulator Screen Shot 2015年11月20日 09.53.54.png有没有觉得Picker显示的文本效果不全,看起来不爽?
嗯,我也是这么觉得的。
然后找到了这么个神技:
屏幕快照 2015-11-20 09.56.52.png哈哈,看效果:
Simulator Screen Shot 2015年11月20日 09.57.50.png有没有那么点心动呢?加油!效果棒棒哒~
网友评论