-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathADPickerVC.swift
More file actions
93 lines (86 loc) · 3.28 KB
/
ADPickerVC.swift
File metadata and controls
93 lines (86 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//
// ADPickerViewController.swift
// AddrManager
//
// Created by Martini Wang on 14/10/27.
// Copyright (c) 2014年 Martini Wang. All rights reserved.
//
/*
pickView 相关
已实现:省、市、区三级联动
待时限:
调整字号;
自动调整列宽(部分自治区等名称过长)或自动截取(前两个字)显示
删除功能:
滚动Picker时移除输入框焦点(收起键盘)
*/
import UIKit
class ADPickerViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.view.hidden = true
}
// returns the number of 'columns' to display.
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 3
}
// returns the # of rows in each component..
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch component {
case 0 :
return loadAllProvinces()!.count//ADChinaSwiftJSON["result"].count
case 1 :
return loadProvinceByIndex(pickerView.selectedRowInComponent(0))!.count()//ADChinaSwiftJSON["result"][pickerView.selectedRowInComponent(0)]["city"].count
case 2 :
return loadCityByIndex(pickerView.selectedRowInComponent(1), inProvince: loadProvinceByIndex(pickerView.selectedRowInComponent(0))!)!.count()//ADChinaSwiftJSON["result"][pickerView.selectedRowInComponent(0)]["city"][pickerView.selectedRowInComponent(1)]["district"].count
default :
return 5
}
}
// pickerView 加载函数
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
switch component {
case 0 :
return ADInquiry(row)
case 1 :
return ADInquiry(pickerView.selectedRowInComponent(0), cityIndex: row)
case 2 :
return ADInquiry(pickerView.selectedRowInComponent(0), cityIndex: pickerView.selectedRowInComponent(1), districtIndex: row)
default :
return "Error"
}
}
// pickerView 滚动操作响应函数
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
hideKeyboard()
// 根据操作列刷新其他列显示
switch component {
case 0 :
pickerView.reloadComponent(1)
pickerView.reloadComponent(2)
pickerView.selectRow(0, inComponent: 1, animated: true)
pickerView.selectRow(0, inComponent: 2, animated: true)
case 1 :
pickerView.reloadComponent(2)
pickerView.selectRow(0, inComponent: 2, animated: true)
case 2 :
break
default :
break
}
}
func hideKeyboard () {
let superview = super.view.superview!
for subView in superview.subviews {
if subView.isMemberOfClass(UITextField) {
subView.resignFirstResponder()
}else if (subView.subviews.count != 0) {
for subsubView in subView.subviews {
if subsubView.isMemberOfClass(UITextField) {
subsubView.resignFirstResponder()
}
}
}
}
}
}