使用UIPickerView实现
Xcode9及以上 Swift4
支持地址反向选中UIPickerView相应行

从erea.plist读取初始显示
//读取省份名称和内容
NSArray.init(contentsOfFile: (Bundle(identifier: "lq150924.DCAreaSelectKit")!).path(forResource: "area", ofType: "plist")!)!.enumerateObjects { (dic, idx, stop) in
self.arrayProvince += [dic as! NSDictionary]
}
//读取第一个市区名称和内容
(arrayProvince.first!["cities"] as! NSArray).enumerateObjects { (dic, idx, stop) in
self.arrayCity += [dic as! NSDictionary]
}
//读取第一个县区名称和内容
(arrayCity.first!["areas"] as! NSArray).enumerateObjects { (dic, idx, stop) in
self.arrayArea += [dic as! NSDictionary]
}
//读取第一个街道/乡镇名称
(arrayArea.first!["streets"] as! NSArray).enumerateObjects { (dic, idx, stop) in
self.arrayStreets += [dic as! String]
}
地址反向确定
let strs = seledStr.components(separatedBy: "/")//反向地址字符用/隔开
var ints = [0, 0, 0, 0]//确定反向地址的具体省市区街道idx
for iii in 0..<strs.count {
switch iii {
case 0://确定省
NSArray.init(contentsOfFile: (Bundle(identifier: "lq150924.DCAreaSelectKit")!).path(forResource: "area", ofType: "plist")!)!.enumerateObjects { (dic, idx, stop) in
if (AreaSeleV.arrayProvince[idx]["state"] as! String) == strs[iii] {
AreaSeleV.areaPickerV.selectRow(idx, inComponent: iii, animated: false)
AreaSeleV.pickerView(AreaSeleV.areaPickerV, didSelectRow: idx, inComponent: iii)
ints[iii] = idx//刷新选中省份下标
}
}
case 1://确定市
(AreaSeleV.arrayProvince[ints[iii-1]]["cities"] as! NSArray).enumerateObjects { (dic, idx, stop) in
if (AreaSeleV.arrayCity[idx]["city"] as! String) == strs[iii] {
AreaSeleV.areaPickerV.selectRow(idx, inComponent: iii, animated: false)
AreaSeleV.pickerView(AreaSeleV.areaPickerV, didSelectRow: idx, inComponent: iii)
ints[iii] = idx//刷新选中市区下标
}
}
case 2://确定县/区
(AreaSeleV.arrayCity[ints[iii-1]]["areas"] as! NSArray).enumerateObjects { (dic, idx, stop) in
if (AreaSeleV.arrayArea[idx]["county"] as! String) == strs[iii] {
AreaSeleV.areaPickerV.selectRow(idx, inComponent: iii, animated: false)
AreaSeleV.pickerView(AreaSeleV.areaPickerV, didSelectRow: idx, inComponent: iii)
ints[iii] = idx//刷新选中县区下标
}
}
default://确定街道
(AreaSeleV.arrayArea[ints[iii-1]]["streets"] as! NSArray).enumerateObjects { (dic, idx, stop) in
if (AreaSeleV.arrayStreets[idx]) == strs[iii] {
AreaSeleV.areaPickerV.selectRow(idx, inComponent: iii, animated: false)
AreaSeleV.pickerView(AreaSeleV.areaPickerV, didSelectRow: idx, inComponent: iii)
}
}
}
代码链接: https://pan.baidu.com/s/1dmte04uhO-7T_zG8elfQUQ 密码: kea2
Framework版: https://pan.baidu.com/s/1vvSIAjhoX2ddcNBd5Ys1hg 密码: p3q4
ps. Swift动态库如何制作及在OC项目中使用请看
https://www.jianshu.com/p/13ee670f21ac
网友评论