2015技术笔记

2015笔记——省市区Picker

2018-07-27  本文已影响4人  满庭花醉三千客

最近做了一个省市区的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

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

上一篇 下一篇

猜你喜欢

热点阅读