iOS开发|iOS开发 —— Swift版地址选择器

已经有二十多天没有更新自己的博客了,这段时间经历了很多事情,离开了生活了六七年的杭州,从离职再入职,忙的是一塌糊涂。
现在这个公司的项目使用了Swift开发,我一直想在自己的项目中也运用Swift,但是一直也没有机会,所以这次能够使用Swift正儿八经的开发,我也是超级兴奋的。
所以从以后开始,我的iOS系列的文章会逐渐的与Swift语言越来越相关。不得不说只有实际开发才能发现Swift中等着我要去踩的坑还有很多。没辙了,爱他就拼命的去填坑吧。
刚入职的第一周写了个简单的页面来熟悉公司项目代码,并且了解下业务。做了一个电商方面相关的收货地址的选择。
今天就来讲讲Swift版本的地址选择器的构建。
构建思路 刚开始领导丢给我了一个数据库包含着中国地区的省市区关系,但是以前处理这个问题常用Plist文件来搞定,所以我也就偷懒懒得再去写Sql语句了,直接用一个Plist文件来处理。
之前OC写的很多省市选择器,都是封装的不够完善,直接调用存在很多问题。并且在处理省市联动的问题上,常常是通过拆分省市区为三个数组,当其中一个数据变化时,再根据 index来处理之后的数据联动。
所以这次的类就本着提高复用性的想法,对地址选择界面做了比较全面的封装,在之后的任何地方调用就非常方便。
首先把UIPickerView这个类的两个代理方法在自己的类里实现,以后调用的时候不用再去实现UIPickerView的两个Delegate Method,之后我们再提供一个协议,用最简单的方式来完成数据的获取。
至于省市区的结构,我们用结构体来处理,将省市区写成两个Struct,再之后就是简单的数据处理了。将数据加载并且传入这个Struct中。
最后,因为有时候不是省市区三个一起调用,有可能只是单个,或者两个。所以再用枚举声明三种类型,包括了省、省市、省市区三种情况,我想这样就可以满足所有情况的使用了。
简单调用 贴上一个简单调用的方法吧,最直接的调用,非常的简单。

class ViewController: UIViewController, LixAreaPickerDelegate { @IBOutlet weak var dataLabel: UILabel! @IBOutlet weak var subdivisionsPicker: LixAreaPickerView!@IBAction func selectPickerType(sender: UISegmentedControl) { switch sender.selectedSegmentIndex { case 0: subdivisionsPicker.pickerType = .Province case 1: subdivisionsPicker.pickerType = .City case 2: subdivisionsPicker.pickerType = .District default: break } }func areaPickerDidUpdate(sender: LixAreaPickerView) { dataLabel.text = (subdivisionsPicker.province ?? "") + " " + (subdivisionsPicker.city ?? "") + " " + (subdivisionsPicker.district ?? "") }override func viewDidLoad() { super.viewDidLoad() subdivisionsPicker.pickerDelegate = self }override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }}

源码地址 【iOS开发|iOS开发 —— Swift版地址选择器】源码我已经放在我的Github上面了,欢迎使用。
如果您觉得好用,麻烦Star,谢谢。

    推荐阅读