Commit e39c2d33d168827bf34e0a8fe9e8a308a08e1815
1 parent
d80eec0f
Exists in
parentassistant
降低耦合度,整理代码
Showing
20 changed files
with
1459 additions
and
1452 deletions
Show diff stats
ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj
@@ -452,7 +452,6 @@ | @@ -452,7 +452,6 @@ | ||
452 | 599364E0204E62E700C8B371 /* Information */, | 452 | 599364E0204E62E700C8B371 /* Information */, |
453 | 599364E6204E62E700C8B371 /* Grow */, | 453 | 599364E6204E62E700C8B371 /* Grow */, |
454 | 599364E2204E62E700C8B371 /* my */, | 454 | 599364E2204E62E700C8B371 /* my */, |
455 | - 599364FD204E941900C8B371 /* userCenter */, | ||
456 | ); | 455 | ); |
457 | path = controllers; | 456 | path = controllers; |
458 | sourceTree = "<group>"; | 457 | sourceTree = "<group>"; |
@@ -481,6 +480,7 @@ | @@ -481,6 +480,7 @@ | ||
481 | isa = PBXGroup; | 480 | isa = PBXGroup; |
482 | children = ( | 481 | children = ( |
483 | BF621CAB205660E90040D2C1 /* My.storyboard */, | 482 | BF621CAB205660E90040D2C1 /* My.storyboard */, |
483 | + 599364FD204E941900C8B371 /* userCenter */, | ||
484 | BFCED886205280B700055373 /* Controller */, | 484 | BFCED886205280B700055373 /* Controller */, |
485 | BFCED889205280C900055373 /* Model */, | 485 | BFCED889205280C900055373 /* Model */, |
486 | 599364E4204E62E700C8B371 /* View */, | 486 | 599364E4204E62E700C8B371 /* View */, |
ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift
@@ -99,6 +99,7 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | @@ -99,6 +99,7 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | ||
99 | } | 99 | } |
100 | //设置scrollview滑动范围 | 100 | //设置scrollview滑动范围 |
101 | contentScrollView.contentSize = CGSize.init(width: width*CGFloat(titleArr.count), height: 0) | 101 | contentScrollView.contentSize = CGSize.init(width: width*CGFloat(titleArr.count), height: 0) |
102 | + contentScrollView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true) | ||
102 | } | 103 | } |
103 | 104 | ||
104 | override func viewWillAppear(_ animated: Bool) { | 105 | override func viewWillAppear(_ animated: Bool) { |
@@ -119,6 +120,10 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | @@ -119,6 +120,10 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | ||
119 | title = "未绑定" | 120 | title = "未绑定" |
120 | }else{ | 121 | }else{ |
121 | title = array[0].studentName | 122 | title = array[0].studentName |
123 | + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as? Int | ||
124 | + if index == nil { | ||
125 | + UserDefaults.standard.set(0, forKey: "SELECT_CHILDREN") | ||
126 | + } | ||
122 | } | 127 | } |
123 | }else{ | 128 | }else{ |
124 | title = "未登录" | 129 | title = "未登录" |
@@ -178,12 +183,9 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | @@ -178,12 +183,9 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | ||
178 | let view = AlertShowView.init(frame: CGRect.init(x: 10, y: Int((navigationBarHeight!+statusBarHeight)+5), width: Int(screenHeight*0.2), height: 50*arr.count)) | 183 | let view = AlertShowView.init(frame: CGRect.init(x: 10, y: Int((navigationBarHeight!+statusBarHeight)+5), width: Int(screenHeight*0.2), height: 50*arr.count)) |
179 | view.setUpDataResource(arr:arr) | 184 | view.setUpDataResource(arr:arr) |
180 | view.showView() | 185 | view.showView() |
181 | - view.AlertBlock = { object in | ||
182 | - if object is StudentClassInfoModel { | ||
183 | - let model = object as! StudentClassInfoModel | ||
184 | - self.titleLeftLab.text = model.studentName | ||
185 | - self.childDataModel = model | ||
186 | - } | 186 | + view.AlertBlock = { index in |
187 | + //MARK:缓存孩子索引 | ||
188 | + UserDefaults.standard.set(index, forKey: "SELECT_CHILDREN") | ||
187 | } | 189 | } |
188 | }else{ | 190 | }else{ |
189 | let alertView = UIAlertController.init(title: "提示", message: "您尚未绑定孩子信息,是否前往绑定?", preferredStyle: UIAlertControllerStyle.alert) | 191 | let alertView = UIAlertController.init(title: "提示", message: "您尚未绑定孩子信息,是否前往绑定?", preferredStyle: UIAlertControllerStyle.alert) |
@@ -212,20 +214,11 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | @@ -212,20 +214,11 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | ||
212 | //MARK: - 设置控制器子视图 | 214 | //MARK: - 设置控制器子视图 |
213 | private func setChildViewContent(){ | 215 | private func setChildViewContent(){ |
214 | 216 | ||
215 | - print("scrollView width === \(contentScrollView.bounds.size.width)") | ||
216 | - if AccountManager.shared.isOnline() { | ||
217 | - let array = AccountManager.shared.getChildClassInfo() | ||
218 | - if !array.isEmpty{ | ||
219 | - let model = array[0] | ||
220 | - childDataModel = model | ||
221 | - } | ||
222 | - } | ||
223 | //添加子控制器 | 217 | //添加子控制器 |
224 | for i in 0..<titleArr.count { | 218 | for i in 0..<titleArr.count { |
225 | if i == 0 { | 219 | if i == 0 { |
226 | let vc = ProgramViewController() | 220 | let vc = ProgramViewController() |
227 | self.addChildViewController(vc) | 221 | self.addChildViewController(vc) |
228 | - vc.studentModel = childDataModel | ||
229 | contentScrollView.addSubview(vc.view) | 222 | contentScrollView.addSubview(vc.view) |
230 | } | 223 | } |
231 | if i == 1 { | 224 | if i == 1 { |
@@ -234,16 +227,6 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | @@ -234,16 +227,6 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { | ||
234 | contentScrollView.addSubview(vc.view) | 227 | contentScrollView.addSubview(vc.view) |
235 | } | 228 | } |
236 | } | 229 | } |
237 | - | ||
238 | -// //设置第一个控制器数据 | ||
239 | -// let childVC = self.childViewControllers.first | ||
240 | -// self.contentScrollView.addSubview((childVC?.view)!) | ||
241 | -// childVC?.view.snp.makeConstraints({ (maker) in | ||
242 | -// maker.width.height.equalTo(self.contentScrollView) | ||
243 | -// maker.center.equalTo(self.contentScrollView) | ||
244 | -// }) | ||
245 | - | ||
246 | - | ||
247 | } | 230 | } |
248 | //MARK: - 设置标题 | 231 | //MARK: - 设置标题 |
249 | func setUpTitle(){ | 232 | func setUpTitle(){ |
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCardViewController.swift
@@ -12,7 +12,15 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate { | @@ -12,7 +12,15 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate { | ||
12 | 12 | ||
13 | var cardInputTextField = UITextField() | 13 | var cardInputTextField = UITextField() |
14 | //孩子数据 | 14 | //孩子数据 |
15 | - var studentData = StudentClassInfoModel() | 15 | + lazy var studentData = {()-> StudentClassInfoModel in |
16 | + var model = StudentClassInfoModel() | ||
17 | + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as! Int | ||
18 | + let array = AccountManager.shared.getChildClassInfo() | ||
19 | + if array.count > 0 && index<array.count{ | ||
20 | + model = array[index] | ||
21 | + } | ||
22 | + return model | ||
23 | + }() | ||
16 | 24 | ||
17 | lazy var cardView = { ()-> UIView in | 25 | lazy var cardView = { ()-> UIView in |
18 | 26 | ||
@@ -33,12 +41,21 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate { | @@ -33,12 +41,21 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate { | ||
33 | 41 | ||
34 | @objc func applyAction(){ | 42 | @objc func applyAction(){ |
35 | DebugLog( "补卡提交") | 43 | DebugLog( "补卡提交") |
36 | - let studentID = self.studentData.studentId | ||
37 | - let params = ["studentid":studentID,"onecard":self.cardInputTextField.text!] as [String : AnyObject] | ||
38 | - HTTPServer.shared.postStudentMendCard(parameters: params as [String : AnyObject]) { (backData, error) in | 44 | + SVProgressHUD.show() |
45 | + let studentID = Int(self.studentData.studentId) | ||
46 | + let params = ["studentid":studentID!,"onecard":self.cardInputTextField.text!] as [String : AnyObject] | ||
47 | + HTTPServer.shared.getStudentMendCard(parameters: params as [String : AnyObject]) { (backData, error) in | ||
39 | print(backData!) | 48 | print(backData!) |
49 | + SVProgressHUD.dismiss() | ||
40 | if error == nil && JSON.fromString(backData)!["status"].intValue == 1 { | 50 | if error == nil && JSON.fromString(backData)!["status"].intValue == 1 { |
41 | - | 51 | + let isSuccess = JSON.fromString(backData)!["data"].boolValue |
52 | + if isSuccess{ | ||
53 | + self.view.makeToast("补卡成功!", duration: 2, position: self.view.center) | ||
54 | + }else{ | ||
55 | + self.view.makeToast("补卡失败!", duration: 2, position: self.view.center) | ||
56 | + } | ||
57 | + }else{ | ||
58 | + appDelegate.window?.makeToast("\(backData!)") | ||
42 | } | 59 | } |
43 | } | 60 | } |
44 | } | 61 | } |
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift
@@ -29,8 +29,17 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | @@ -29,8 +29,17 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | ||
29 | }() | 29 | }() |
30 | //考勤数据 | 30 | //考勤数据 |
31 | var viewData = Array<StudentCardModel>() | 31 | var viewData = Array<StudentCardModel>() |
32 | - //孩子数据模型 | ||
33 | - var studentModel = StudentClassInfoModel() | 32 | + |
33 | + //孩子数据 | ||
34 | + lazy var studentModel = {()-> StudentClassInfoModel in | ||
35 | + var model = StudentClassInfoModel() | ||
36 | + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as! Int | ||
37 | + let array = AccountManager.shared.getChildClassInfo() | ||
38 | + if array.count > 0 && index<array.count{ | ||
39 | + model = array[index] | ||
40 | + } | ||
41 | + return model | ||
42 | + }() | ||
34 | //时间选择器 | 43 | //时间选择器 |
35 | var addAlertView = PickSelectView() | 44 | var addAlertView = PickSelectView() |
36 | //选择的时间 | 45 | //选择的时间 |
@@ -51,7 +60,9 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | @@ -51,7 +60,9 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | ||
51 | /// 获取数据 | 60 | /// 获取数据 |
52 | private func downLoadDataFromNet(time:String){ | 61 | private func downLoadDataFromNet(time:String){ |
53 | SVProgressHUD.show() | 62 | SVProgressHUD.show() |
54 | - let params = ["studentid":studentModel.studentId,"schoolid":studentModel.schollId,"starttime":time] as [String : Any] | 63 | + let studentID = Int(self.studentModel.studentId)! |
64 | + let schoolID = Int(self.studentModel.schoolId)! | ||
65 | + let params = ["studentid":studentID,"schoolid":schoolID,"starttime":time] as [String : AnyObject] | ||
55 | HTTPServer.shared.getStudentCheckList(parameters: params as [String : AnyObject]) { (backData, error) in | 66 | HTTPServer.shared.getStudentCheckList(parameters: params as [String : AnyObject]) { (backData, error) in |
56 | SVProgressHUD.dismiss() | 67 | SVProgressHUD.dismiss() |
57 | if error == nil && JSON.fromString(backData)!["status"].intValue == 1 { | 68 | if error == nil && JSON.fromString(backData)!["status"].intValue == 1 { |
@@ -89,7 +100,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | @@ -89,7 +100,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | ||
89 | let cell = tableView.dequeueReusableCell(withIdentifier: "GrowCheckUpTableViewCell", for: indexPath) as! GrowCheckUpTableViewCell | 100 | let cell = tableView.dequeueReusableCell(withIdentifier: "GrowCheckUpTableViewCell", for: indexPath) as! GrowCheckUpTableViewCell |
90 | cell.checkCount.text = "\(self.viewData.count)" | 101 | cell.checkCount.text = "\(self.viewData.count)" |
91 | cell.timeSelectBtn.setTitle(timeSelectString, for: UIControlState.normal) | 102 | cell.timeSelectBtn.setTitle(timeSelectString, for: UIControlState.normal) |
92 | - cell.checkName.text = studentModel.studentName | 103 | + cell.checkName.text = self.studentModel.studentName |
93 | cell.backBlock = { | 104 | cell.backBlock = { |
94 | self.selectTimeAction() | 105 | self.selectTimeAction() |
95 | } | 106 | } |
@@ -97,7 +108,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | @@ -97,7 +108,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | ||
97 | }else{ | 108 | }else{ |
98 | let cell = tableView.dequeueReusableCell(withIdentifier: "GrowCheckDownTableViewCell", for: indexPath) as! GrowCheckDownTableViewCell | 109 | let cell = tableView.dequeueReusableCell(withIdentifier: "GrowCheckDownTableViewCell", for: indexPath) as! GrowCheckDownTableViewCell |
99 | let model = self.viewData[indexPath.row-1] | 110 | let model = self.viewData[indexPath.row-1] |
100 | - cell.studentParents.text = "尊敬的\(studentModel.studentName)家长" | 111 | + cell.studentParents.text = "尊敬的\(self.studentModel.studentName)家长" |
101 | cell.setCellData(model: model) | 112 | cell.setCellData(model: model) |
102 | return cell | 113 | return cell |
103 | } | 114 | } |
@@ -112,7 +123,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | @@ -112,7 +123,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi | ||
112 | self.downLoadDataFromNet(time: str) | 123 | self.downLoadDataFromNet(time: str) |
113 | } | 124 | } |
114 | } | 125 | } |
115 | - | 126 | + |
116 | override func didReceiveMemoryWarning() { | 127 | override func didReceiveMemoryWarning() { |
117 | super.didReceiveMemoryWarning() | 128 | super.didReceiveMemoryWarning() |
118 | // Dispose of any resources that can be recreated. | 129 | // Dispose of any resources that can be recreated. |
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramViewController.swift
@@ -50,8 +50,6 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat | @@ -50,8 +50,6 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat | ||
50 | 50 | ||
51 | //Data | 51 | //Data |
52 | var tableData = Array<String>() | 52 | var tableData = Array<String>() |
53 | - //孩子数据 | ||
54 | - var studentModel = StudentClassInfoModel() | ||
55 | 53 | ||
56 | var titleImage = Array<String>() | 54 | var titleImage = Array<String>() |
57 | 55 | ||
@@ -122,12 +120,10 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat | @@ -122,12 +120,10 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat | ||
122 | case 0: | 120 | case 0: |
123 | let vc = ProgramCheckViewController() | 121 | let vc = ProgramCheckViewController() |
124 | vc.title = "考勤" | 122 | vc.title = "考勤" |
125 | - vc.studentModel = studentModel | ||
126 | self.navigationController?.pushViewController(vc, animated: true) | 123 | self.navigationController?.pushViewController(vc, animated: true) |
127 | case 1: | 124 | case 1: |
128 | let vc = ProgramCardViewController() | 125 | let vc = ProgramCardViewController() |
129 | vc.title = "补卡" | 126 | vc.title = "补卡" |
130 | - vc.studentData = studentModel | ||
131 | self.navigationController?.pushViewController(vc, animated: true) | 127 | self.navigationController?.pushViewController(vc, animated: true) |
132 | case 2: | 128 | case 2: |
133 | let vc = ProgramVacateViewController() | 129 | let vc = ProgramVacateViewController() |
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MessageViewController.swift
@@ -36,6 +36,7 @@ class MessageViewController: UIViewController { | @@ -36,6 +36,7 @@ class MessageViewController: UIViewController { | ||
36 | } | 36 | } |
37 | // MARK: - 收到新通知时 | 37 | // MARK: - 收到新通知时 |
38 | @objc func receivedNewNotificationAction(){ | 38 | @objc func receivedNewNotificationAction(){ |
39 | + | ||
39 | setupWithModel() | 40 | setupWithModel() |
40 | } | 41 | } |
41 | 42 |
ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BaseCityChooseSchoolViewController.swift
0 → 100644
@@ -0,0 +1,255 @@ | @@ -0,0 +1,255 @@ | ||
1 | +// | ||
2 | +// BaseCityChooseSchoolViewController.swift | ||
3 | +// ParentAssistant | ||
4 | +// | ||
5 | +// Created by 左丞 on 2018/3/9. | ||
6 | +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | +class BaseCityChooseSchoolViewController: UIViewController,UISearchBarDelegate { | ||
11 | + | ||
12 | + @IBOutlet weak var tableView: UITableView! | ||
13 | + let firstLetterArr:[String] = ["#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] | ||
14 | + var keys:[String] = [] | ||
15 | + var schoolDic:[String:[School]] = [:] | ||
16 | + var schoolArray:[School] = [] | ||
17 | + @IBOutlet weak var citySelectbtn: UILabel! | ||
18 | + | ||
19 | + override func viewDidLoad() { | ||
20 | + super.viewDidLoad() | ||
21 | + | ||
22 | + citySelectbtn.text = localAddress | ||
23 | + getData() | ||
24 | + // Do any additional setup after loading the view. | ||
25 | + } | ||
26 | + | ||
27 | + //根据关键字获取学校 | ||
28 | + func getData(_ keyword:String=""){ | ||
29 | + var dic:[String:AnyObject] = ["areaName":localAddress as AnyObject,"keyword":keyword as AnyObject] | ||
30 | + if keyword == ""{ | ||
31 | + dic.removeValue(forKey: "keyword") | ||
32 | + } | ||
33 | + HTTPServer.shared.getAreaSchool(parameters: dic) { (str, error) in | ||
34 | + let json=JSON.fromString(str) | ||
35 | + if let ret=json{ | ||
36 | + let er=ret["error"].string | ||
37 | + if let errorStr=er{ | ||
38 | + appDelegate.window!.makeToast(errorStr) | ||
39 | + }else{ | ||
40 | + self.schoolArray.removeAll() | ||
41 | + for item in ret.contentData().arrayValue { | ||
42 | + self.schoolArray.append(School(j: item)) | ||
43 | + } | ||
44 | + self.sortData(self.schoolArray) | ||
45 | + } | ||
46 | + }else{ | ||
47 | + | ||
48 | + } | ||
49 | + } | ||
50 | + } | ||
51 | + | ||
52 | + //对给定的学校分组 | ||
53 | + func sortData(_ array:[School]){ | ||
54 | + schoolDic = [:] | ||
55 | + for letter in firstLetterArr { | ||
56 | + var arr:[School] = [] | ||
57 | + for school in array{ | ||
58 | + if String(format: "%c",pinyinFirstLetter((school.name as NSString).character(at: 0))).uppercased() == letter{ | ||
59 | + arr.append(school) | ||
60 | + } | ||
61 | + } | ||
62 | + if arr.count > 0{ | ||
63 | + schoolDic.updateValue(arr, forKey: letter) | ||
64 | + } | ||
65 | + } | ||
66 | + keys = Array(schoolDic.keys) | ||
67 | + keys.sort { (key1, key2) -> Bool in | ||
68 | + return key1 < key2 | ||
69 | + } | ||
70 | + tableView.reloadData() | ||
71 | + } | ||
72 | + | ||
73 | + override func didReceiveMemoryWarning() { | ||
74 | + super.didReceiveMemoryWarning() | ||
75 | + // Dispose of any resources that can be recreated. | ||
76 | + } | ||
77 | + | ||
78 | + //h获取已经选中的学校 | ||
79 | + func getSelectSchool() -> School? { | ||
80 | + for (_,item) in schoolDic{ | ||
81 | + for school in item{ | ||
82 | + if school.isSelect{ | ||
83 | + return school | ||
84 | + } | ||
85 | + } | ||
86 | + } | ||
87 | + return nil | ||
88 | + } | ||
89 | + | ||
90 | + //下一步 | ||
91 | + @IBAction func nextStep(_ sender: UIButton) { | ||
92 | + let school = getSelectSchool() | ||
93 | + if school == nil{ | ||
94 | + appDelegate.window!.makeToast("请先选择学校") | ||
95 | + return | ||
96 | + } | ||
97 | + if !AccountManager.shared.isOnline(){ | ||
98 | + appDelegate.window!.makeToast("请先登录") | ||
99 | + return | ||
100 | + } | ||
101 | + | ||
102 | + if school!.isNew == 1{ | ||
103 | + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
104 | + vc.from = .select | ||
105 | + vc.school = school! | ||
106 | + self.navigationController?.pushViewController(vc, animated: true) | ||
107 | + }else{ | ||
108 | + if AccountManager.shared.isNew() == 1{ | ||
109 | + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
110 | + vc.from = .unReserved | ||
111 | + vc.school = school! | ||
112 | + self.navigationController?.pushViewController(vc, animated: true) | ||
113 | + return | ||
114 | + } | ||
115 | + let vc = Story.instantiateViewControllerWithIdentifier("InvitationCodeVerificationViewControllerVC", storyName: "UserCenter") as! InvitationCodeVerificationViewController | ||
116 | + vc.school = school! | ||
117 | + self.navigationController?.pushViewController(vc, animated: true) | ||
118 | + | ||
119 | + } | ||
120 | + } | ||
121 | + | ||
122 | + func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { | ||
123 | + searchBar.showsCancelButton = true | ||
124 | + } | ||
125 | + | ||
126 | + func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { | ||
127 | + searchData(searchBar) | ||
128 | + } | ||
129 | + | ||
130 | + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { | ||
131 | + searchData(searchBar) | ||
132 | + } | ||
133 | + | ||
134 | + //搜索学校 | ||
135 | + func searchData(_ searchBar: UISearchBar){ | ||
136 | + getData(searchBar.text!) | ||
137 | + searchBar.resignFirstResponder() | ||
138 | + searchBar.showsCancelButton = false | ||
139 | + | ||
140 | + } | ||
141 | + | ||
142 | + //左上角城市选择按钮点击事件 | ||
143 | + @IBAction func citySelectBtnClick(_ sender: UITapGestureRecognizer) { | ||
144 | + sender.view?.isUserInteractionEnabled = false | ||
145 | + LZCityPickerController.showPicker(in: self | ||
146 | + , select: { (address, province, city, area, isSelect) in | ||
147 | + if isSelect{ | ||
148 | + sender.view?.isUserInteractionEnabled = true | ||
149 | + self.selectCity(city: area!) | ||
150 | + } | ||
151 | + }) { | ||
152 | + sender.view?.isUserInteractionEnabled = true | ||
153 | + | ||
154 | + } | ||
155 | + } | ||
156 | + | ||
157 | + func selectCity(city: String) { | ||
158 | + localAddress = city | ||
159 | + | ||
160 | + citySelectbtn.text = city | ||
161 | + self.getData() | ||
162 | + } | ||
163 | + | ||
164 | + override func viewWillAppear(_ animated: Bool) { | ||
165 | + super.viewWillAppear(animated) | ||
166 | + citySelectbtn.text = localAddress | ||
167 | + } | ||
168 | + /* | ||
169 | + // MARK: - Navigation | ||
170 | + | ||
171 | + // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
172 | + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
173 | + // Get the new view controller using segue.destinationViewController. | ||
174 | + // Pass the selected object to the new view controller. | ||
175 | + } | ||
176 | + */ | ||
177 | + | ||
178 | + //根据indexPath找到相对应的model | ||
179 | + func getSchoolByIndexpath(indexPath:IndexPath)->School{ | ||
180 | + return schoolDic[keys[indexPath.section]]![indexPath.row] | ||
181 | + | ||
182 | + } | ||
183 | + | ||
184 | + //所有数据全部取消选中 | ||
185 | + func changeSchoolSelectState(){ | ||
186 | + for (_,value) in schoolDic { | ||
187 | + for item in value{ | ||
188 | + item.isSelect = false | ||
189 | + } | ||
190 | + } | ||
191 | + } | ||
192 | +} | ||
193 | + | ||
194 | +extension BaseCityChooseSchoolViewController:UITableViewDelegate,UITableViewDataSource{ | ||
195 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
196 | + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SelectSchoolList | ||
197 | + let item = getSchoolByIndexpath(indexPath: indexPath) | ||
198 | + cell.schoolName.text = item.name | ||
199 | + if item.isSelect{ | ||
200 | + cell.isSelect.isHidden = false | ||
201 | + }else{ | ||
202 | + cell.isSelect.isHidden = true | ||
203 | + } | ||
204 | + return cell | ||
205 | + } | ||
206 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
207 | + | ||
208 | + return schoolDic[keys[section]]!.count | ||
209 | + } | ||
210 | + | ||
211 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
212 | + let item = getSchoolByIndexpath(indexPath: indexPath) | ||
213 | + changeSchoolSelectState() | ||
214 | + item.isSelect = !item.isSelect | ||
215 | + tableView.reloadData() | ||
216 | + } | ||
217 | + | ||
218 | + func sectionIndexTitles(for tableView: UITableView) -> [String]? { | ||
219 | + return keys | ||
220 | + } | ||
221 | + | ||
222 | + func numberOfSections(in tableView: UITableView) -> Int { | ||
223 | + return keys.count | ||
224 | + } | ||
225 | + | ||
226 | + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { | ||
227 | + return keys[section] | ||
228 | + } | ||
229 | +} | ||
230 | + | ||
231 | +class SelectSchoolList: UITableViewCell { | ||
232 | + | ||
233 | + @IBOutlet weak var isSelect: UIImageView! | ||
234 | + @IBOutlet weak var schoolName: UILabel! | ||
235 | +} | ||
236 | + | ||
237 | +class School:NSObject{ | ||
238 | + var schoolArea:String=""//学校所在地区 , | ||
239 | + var schoolId:Int = 0//学校id , | ||
240 | + var name:String=""//学校名称 , | ||
241 | + var state:Int=0//状态,1正常,0关闭 | ||
242 | + var isNew:Int=0////1非合作学校,0合作学校 | ||
243 | + var isSelect:Bool = false | ||
244 | + init(j:JSON){ | ||
245 | + schoolArea = j["school_area"].stringValue | ||
246 | + schoolId = j["school_id"].intValue | ||
247 | + name = j["school_name"].stringValue | ||
248 | + state = j["state"].intValue | ||
249 | + } | ||
250 | + init(names:String,id:Int) { | ||
251 | + name = names | ||
252 | + schoolId=id | ||
253 | + } | ||
254 | +} | ||
255 | + |
ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindingViewController.swift
0 → 100644
@@ -0,0 +1,344 @@ | @@ -0,0 +1,344 @@ | ||
1 | +// | ||
2 | +// BindingViewController.swift | ||
3 | +// ParentAssistant | ||
4 | +// | ||
5 | +// Created by 左丞 on 2018/3/6. | ||
6 | +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | +enum FromVC:Int{ | ||
11 | + //信息确认 | ||
12 | + case selfVC = 1//从当前类的对象push过来的(非合作学校) | ||
13 | + case reserved = 2//合作学校预留 | ||
14 | + case unReserved = 3//合作学校非预留 | ||
15 | + //选择 | ||
16 | + case select = 4 //选择 | ||
17 | +} | ||
18 | + | ||
19 | +enum SelectType:Int{ | ||
20 | + case gender=1//性别 | ||
21 | + case grade=2//年级 | ||
22 | + case classes=3//班级 | ||
23 | +} | ||
24 | + | ||
25 | +class BindingViewController: UIViewController { | ||
26 | + | ||
27 | + var from:FromVC = .selfVC | ||
28 | + @IBOutlet weak var confirmBtn: UIButton!//确定按钮 | ||
29 | + @IBOutlet weak var phoneNumberLabel: UILabel!//电话号码显示的label | ||
30 | + @IBOutlet weak var firstLineLabel: UILabel!//第一行(绑定手机号码为)所在的label | ||
31 | + @IBOutlet weak var nameTextFiled: UITextField! | ||
32 | + | ||
33 | + @IBOutlet weak var selectTableView: UITableView! | ||
34 | + @IBOutlet weak var selectImageHeight: NSLayoutConstraint!//三个image高度是相等的 | ||
35 | + @IBOutlet weak var classLabel: UILabel! | ||
36 | + @IBOutlet weak var gradeLabel: UILabel! | ||
37 | + @IBOutlet weak var genderLabel: UILabel! | ||
38 | + var boyName:String="" | ||
39 | + var gender:String = "" | ||
40 | + var school:School! | ||
41 | + var selecttype:SelectType = .gender | ||
42 | + var genderArr:[String] = ["男","女"] | ||
43 | + var gradeArr:[GradeAndClasses] = [] | ||
44 | + var classesArr:[GradeAndClasses]=[] | ||
45 | + var selectGrade:GradeAndClasses! | ||
46 | + var selectClass:GradeAndClasses! | ||
47 | + var account = AccountManager.shared | ||
48 | + override func viewDidLoad() { | ||
49 | + super.viewDidLoad() | ||
50 | + stepUI() | ||
51 | + if selectGrade == nil && selectClass == nil{ | ||
52 | + getGradeOrClassData(type: 1) | ||
53 | + } | ||
54 | + setLabelValue() | ||
55 | + if from == .reserved || from == .unReserved{ | ||
56 | + getData() | ||
57 | + } | ||
58 | + // Do any additional setup after loading the view. | ||
59 | + } | ||
60 | + | ||
61 | + func getData(){ | ||
62 | + HTTPServer.shared.getParentInfo(["mobile":account.phone() as AnyObject,"school_id":school.schoolId as AnyObject]) { (str, error) in | ||
63 | + let json=JSON.fromString(str) | ||
64 | + if let ret=json{ | ||
65 | + let er=ret["error"].string | ||
66 | + if let errorStr=er{ | ||
67 | + appDelegate.window!.makeToast(errorStr) | ||
68 | + }else{ | ||
69 | + self.account.rawUserInfo = json | ||
70 | + self.setValueForLabel() | ||
71 | + } | ||
72 | + }else{ | ||
73 | + | ||
74 | + } | ||
75 | + } | ||
76 | + } | ||
77 | + | ||
78 | + func setValueForLabel(){ | ||
79 | + if account.studentClass().count == 0{ | ||
80 | + appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") | ||
81 | + return | ||
82 | + } | ||
83 | + let student = account.studentClass()[0] | ||
84 | + nameTextFiled.text = student["studentName"].stringValue | ||
85 | + classLabel.text = student["className"].stringValue | ||
86 | + gradeLabel.text = student["gradename"].stringValue | ||
87 | + genderLabel.text = student["sex"].intValue == 1 ? "男" : "女" | ||
88 | + } | ||
89 | + | ||
90 | + func stepUI(){ | ||
91 | + setViewLayer(view: classLabel) | ||
92 | + setViewLayer(view: gradeLabel) | ||
93 | + setViewLayer(view: genderLabel) | ||
94 | + setViewRadius(view: confirmBtn) | ||
95 | + if from == .selfVC{ | ||
96 | + phoneNumberLabel.isHidden = false | ||
97 | + phoneNumberLabel.text = account.phone() | ||
98 | + firstLineLabel.isHidden = false | ||
99 | + } | ||
100 | + if from != .select{ | ||
101 | + selectImageHeight.constant = 0 | ||
102 | + nameTextFiled.isUserInteractionEnabled = false | ||
103 | + } | ||
104 | + } | ||
105 | + | ||
106 | + @IBAction func cancleSelectTableView(_ sender: UIControl) { | ||
107 | + selectTableView.isHidden = true | ||
108 | + } | ||
109 | + func getGradeOrClassData(type:Int,gradeid:Int=0){//1,年级,2班级 | ||
110 | + HTTPServer.shared.getClassOrGrade(["state":type as AnyObject,"schoolid":school.schoolId as AnyObject,"gradeid":gradeid as AnyObject]) { (str, error) in | ||
111 | + let json=JSON.fromString(str) | ||
112 | + if let ret=json{ | ||
113 | + let er=ret["error"].string | ||
114 | + if let errorStr=er{ | ||
115 | + appDelegate.window!.makeToast(errorStr) | ||
116 | + }else{ | ||
117 | + for item in ret.contentData().arrayValue{ | ||
118 | + if type == 1{ | ||
119 | + self.gradeArr.append(GradeAndClasses(j: item)) | ||
120 | + }else{ | ||
121 | + self.classesArr.append(GradeAndClasses(j: item)) | ||
122 | + } | ||
123 | + } | ||
124 | + } | ||
125 | + }else{ | ||
126 | + | ||
127 | + } | ||
128 | + } | ||
129 | + } | ||
130 | + | ||
131 | + func setLabelValue(){ | ||
132 | + nameTextFiled.text = boyName | ||
133 | + classLabel.text = selectClass != nil ? selectClass.className : "" | ||
134 | + gradeLabel.text = selectGrade != nil ? selectGrade.gradeName : "" | ||
135 | + genderLabel.text = gender | ||
136 | + } | ||
137 | + | ||
138 | + override func didReceiveMemoryWarning() { | ||
139 | + super.didReceiveMemoryWarning() | ||
140 | + // Dispose of any resources that can be recreated. | ||
141 | + } | ||
142 | + | ||
143 | + //绑定孩子信息 | ||
144 | + func bindlingChildren(){ | ||
145 | + var dic:[String:AnyObject] = [:] | ||
146 | + switch from { | ||
147 | + case .selfVC: | ||
148 | + dic = ["parentId": account.parentId() as AnyObject, | ||
149 | + "cooperateFlag": "false" as AnyObject, | ||
150 | + "schoolId": school.schoolId as AnyObject, | ||
151 | + "classId": selectClass.classId as AnyObject, | ||
152 | + "studentName": boyName as AnyObject, | ||
153 | + "sex": (gender == "男" ? 1 : 2) as AnyObject] | ||
154 | + case .reserved: | ||
155 | + dic = ["cooperateFlag": "true" as AnyObject, | ||
156 | + "mobileFlag": "true" as AnyObject, | ||
157 | + "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] | ||
158 | + default: | ||
159 | + dic = ["cooperateFlag": "true" as AnyObject, | ||
160 | + "classId": account.studentClass()[0]["classId"].intValue as AnyObject, | ||
161 | + "mobileFlag": "false" as AnyObject, | ||
162 | + "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] | ||
163 | + } | ||
164 | + dic.updateValue(account.parentId() as AnyObject, forKey: "parentId") | ||
165 | + HTTPServer.shared.bindlingChildren(parameters: dic) { (str, error) in | ||
166 | + if JSON.fromString(str)!["status"] == 1 && error == nil{ | ||
167 | + appDelegate.window!.makeToast("绑定成功") | ||
168 | + let vc = BindlingSuccessViewController() | ||
169 | + self.navigationController?.pushViewController(vc, animated: true) | ||
170 | + }else{ | ||
171 | + appDelegate.window!.makeToast("绑定失败") | ||
172 | + | ||
173 | + } | ||
174 | + } | ||
175 | + } | ||
176 | + | ||
177 | + //确定按钮 | ||
178 | + @IBAction func confirmBtnClcik(_ sender: UIButton) { | ||
179 | + if (from == .reserved || from == .unReserved) && account.studentClass().count == 0{ | ||
180 | + appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") | ||
181 | + return | ||
182 | + } | ||
183 | + if from == .select && (selectClass == nil || boyName == "" || gender == ""){//班级选择完成则年级肯定已经完成 | ||
184 | + appDelegate.window!.makeToast("请先填写姓名并选择班级,年级,性别") | ||
185 | + return | ||
186 | + } | ||
187 | + //确认信息的确认按钮 | ||
188 | + if from != .select{ | ||
189 | + bindlingChildren() | ||
190 | + return | ||
191 | + } | ||
192 | + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
193 | + vc.boyName = boyName | ||
194 | + vc.gender = gender | ||
195 | + vc.from = .selfVC | ||
196 | + vc.selectClass = selectClass | ||
197 | + vc.selectGrade = selectGrade | ||
198 | + self.navigationController?.pushViewController(vc, animated: true) | ||
199 | + } | ||
200 | + | ||
201 | + override func viewWillAppear(_ animated: Bool) { | ||
202 | + super.viewWillAppear(animated) | ||
203 | + switch from { | ||
204 | + case .select: | ||
205 | + self.navigationItem.title = "填写孩子信息" | ||
206 | + default: | ||
207 | + self.navigationItem.title = "信息核对" | ||
208 | + } | ||
209 | + } | ||
210 | + | ||
211 | + @IBAction func selectTapAction(_ sender: UITapGestureRecognizer) { | ||
212 | + boyName = nameTextFiled.text ?? "" | ||
213 | + if from != .select { | ||
214 | + return | ||
215 | + } | ||
216 | + getSelectTableViewRect(sender) | ||
217 | + selectTableView.isHidden = false | ||
218 | + switch sender.view!.tag { | ||
219 | + case 1000: | ||
220 | + selecttype = .gender | ||
221 | + selectTableView.frame.size.height = 88 | ||
222 | + case 1001: | ||
223 | + selecttype = .grade | ||
224 | + if gradeArr.count > 3{ | ||
225 | + selectTableView.frame.size.height = 132 | ||
226 | + }else{ | ||
227 | + selectTableView.frame.size.height = 44*CGFloat(gradeArr.count) | ||
228 | + } | ||
229 | + | ||
230 | + case 1002: | ||
231 | + if selectGrade == nil{ | ||
232 | + selectTableView.isHidden = true | ||
233 | + appDelegate.window!.makeToast("请先选择年级") | ||
234 | + return | ||
235 | + } | ||
236 | + selecttype = .classes | ||
237 | + if classesArr.count > 3{ | ||
238 | + selectTableView.frame.size.height = 132 | ||
239 | + }else{ | ||
240 | + selectTableView.frame.size.height = 44*CGFloat(classesArr.count) | ||
241 | + } | ||
242 | + | ||
243 | + default: | ||
244 | + break | ||
245 | + } | ||
246 | + selectTableView.reloadData() | ||
247 | + } | ||
248 | + | ||
249 | + func getSelectTableViewRect(_ sender: UITapGestureRecognizer){ | ||
250 | + let locaViewFrame = sender.view!.frame | ||
251 | + selectTableView.frame.origin = CGPoint(x: locaViewFrame.origin.x+sender.view!.superview!.frame.origin.x, y: locaViewFrame.maxY+sender.view!.superview!.frame.origin.y) | ||
252 | + | ||
253 | + } | ||
254 | + | ||
255 | + /* | ||
256 | + // MARK: - Navigation | ||
257 | + | ||
258 | + // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
259 | + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
260 | + // Get the new view controller using segue.destinationViewController. | ||
261 | + // Pass the selected object to the new view controller. | ||
262 | + } | ||
263 | + */ | ||
264 | + | ||
265 | +} | ||
266 | + | ||
267 | +extension BindingViewController:UITableViewDelegate,UITableViewDataSource{ | ||
268 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
269 | + switch selecttype { | ||
270 | + case .gender: | ||
271 | + return genderArr.count | ||
272 | + case .grade: | ||
273 | + return gradeArr.count | ||
274 | + default: | ||
275 | + return classesArr.count | ||
276 | + } | ||
277 | + } | ||
278 | + | ||
279 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
280 | + switch selecttype { | ||
281 | + case .gender: | ||
282 | + tableView.isHidden = true | ||
283 | + gender = genderArr[indexPath.row] | ||
284 | + case .grade: | ||
285 | + tableView.isHidden = true | ||
286 | + let items = gradeArr[indexPath.row] | ||
287 | + for item in gradeArr{ | ||
288 | + item.isSelect = false | ||
289 | + } | ||
290 | + items.isSelect = true | ||
291 | + selectGrade = items | ||
292 | + getGradeOrClassData(type: 2, gradeid: items.gradeid) | ||
293 | + default: | ||
294 | + let items = classesArr[indexPath.row] | ||
295 | + | ||
296 | + tableView.isHidden = true | ||
297 | + for item in classesArr{ | ||
298 | + item.isSelect = false | ||
299 | + } | ||
300 | + items.isSelect = true | ||
301 | + selectClass = items | ||
302 | + } | ||
303 | + setLabelValue() | ||
304 | + } | ||
305 | + | ||
306 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
307 | + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) | ||
308 | + switch selecttype { | ||
309 | + case .gender: | ||
310 | + cell.textLabel?.text = genderArr[indexPath.row] | ||
311 | + case .grade: | ||
312 | + cell.textLabel?.text = gradeArr[indexPath.row].gradeName | ||
313 | + default: | ||
314 | + cell.textLabel?.text = classesArr[indexPath.row].className | ||
315 | + } | ||
316 | + return cell | ||
317 | + } | ||
318 | + | ||
319 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
320 | + return 44 | ||
321 | + } | ||
322 | +} | ||
323 | + | ||
324 | +extension BindingViewController:UITextFieldDelegate{ | ||
325 | + func textFieldShouldReturn(_ textField: UITextField) -> Bool { | ||
326 | + boyName = textField.text! | ||
327 | + textField.resignFirstResponder() | ||
328 | + return true | ||
329 | + } | ||
330 | +} | ||
331 | + | ||
332 | +class GradeAndClasses: NSObject { | ||
333 | + var gradeid:Int=0 | ||
334 | + var gradeName:String = "" | ||
335 | + var classId:Int=0 | ||
336 | + var className:String = "" | ||
337 | + var isSelect:Bool = false | ||
338 | + init(j:JSON){ | ||
339 | + gradeid = j["gradeId"].intValue | ||
340 | + gradeName = j["gradeName"].stringValue | ||
341 | + classId = j["classId"].intValue | ||
342 | + className = j["className"].stringValue | ||
343 | + } | ||
344 | +} |
ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindlingSuccessViewController.swift
0 → 100644
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +// | ||
2 | +// BindlingSuccessViewController.swift | ||
3 | +// ParentAssistant | ||
4 | +// | ||
5 | +// Created by 左丞 on 2018/3/16. | ||
6 | +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class BindlingSuccessViewController: UIViewController ,UIWebViewDelegate,UIScrollViewDelegate{ | ||
12 | + var webView:UIWebView! | ||
13 | + var header:UIView! | ||
14 | + var webBrowserView:UIView! | ||
15 | + var urlStr:String="http://60.190.202.57:8101/RecommendOrder.aspx?userid=" | ||
16 | + var bindlingType:Int = 1 | ||
17 | + override func viewDidLoad() { | ||
18 | + super.viewDidLoad() | ||
19 | + self.view.backgroundColor = UIColor.white | ||
20 | + // Do any additional setup after loading the view. | ||
21 | + webView = UIWebView() | ||
22 | + webView.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: getScreenHeight()) | ||
23 | + webView.delegate = self; | ||
24 | + webView.backgroundColor = UIColor.clear | ||
25 | + self.view.addSubview(webView) | ||
26 | + | ||
27 | + let request = URLRequest(url: URL(string: urlStr)!) | ||
28 | + webView.loadRequest(request) | ||
29 | + | ||
30 | + if bindlingType == 0{ | ||
31 | + header = UIView() | ||
32 | + header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 80) | ||
33 | + header.backgroundColor = UIColor.clear | ||
34 | + let backView = UIView() | ||
35 | + let image = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) | ||
36 | + image.image = #imageLiteral(resourceName: "my_icon_bindlingSuccess") | ||
37 | + backView.addSubview(image) | ||
38 | + let label = UILabel(frame: CGRect(x: 50, y: 10, width: header.frame.width - 20, height: 20)) | ||
39 | + label.text = "绑定成功" | ||
40 | + label.numberOfLines = 0 | ||
41 | + label.textColor = UIColor.darkGray | ||
42 | + label.font = UIFont.systemFont(ofSize: 15) | ||
43 | + label.sizeToFit() | ||
44 | + backView.addSubview(label) | ||
45 | + backView.frame.size = CGSize(width: label.frame.maxX, height: 40) | ||
46 | + backView.center.y = header.center.y | ||
47 | + backView.center.x = header.center.x-10 | ||
48 | + header.addSubview(label) | ||
49 | + }else{ | ||
50 | + header = UIView() | ||
51 | + header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 150) | ||
52 | + header.backgroundColor = UIColor.clear | ||
53 | + let label = UILabel(frame: CGRect(x: 10, y: 10, width: header.frame.width - 20, height: 100)) | ||
54 | + label.text = "生成孩子\"汇作业\"账号为:\(urlStr),\n初始密码为:\(urlStr)(与账号相同),\n孩子可以下载\"汇作业\"app进行使用,\n" | ||
55 | + label.numberOfLines = 0 | ||
56 | + label.textColor = UIColor.darkGray | ||
57 | + label.font = UIFont.systemFont(ofSize: 15) | ||
58 | + label.sizeToFit() | ||
59 | + header.addSubview(label) | ||
60 | + | ||
61 | + let backView = UIView() | ||
62 | + let label2 = UILabel(frame: CGRect(x: 0, y: 5, width: header.frame.width - 20, height: 20)) | ||
63 | + label2.text = "下载地址:" | ||
64 | + label2.textColor = UIColor.darkGray | ||
65 | + label2.font = UIFont.systemFont(ofSize: 15) | ||
66 | + label2.sizeToFit() | ||
67 | + backView.addSubview(label2) | ||
68 | + let btn = UIButton(frame: CGRect(x: label2.frame.maxX, y: 0, width: 70, height: 30)) | ||
69 | + | ||
70 | + let str = NSMutableAttributedString(string: "汇作业") | ||
71 | + let strRange = NSRange(location: 0, length: str.length) | ||
72 | + str.addAttributes([NSAttributedStringKey.underlineStyle: NSNumber(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), | ||
73 | + NSAttributedStringKey.foregroundColor: Theme.topBarColor(), | ||
74 | + NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15)], | ||
75 | + range: strRange) | ||
76 | + btn.setAttributedTitle(str, for: .normal) | ||
77 | + btn.addTarget(self, action: #selector(BindlingSuccessViewController.pushToAppStore), for: .touchUpInside) | ||
78 | + backView.addSubview(btn) | ||
79 | + backView.frame.size = CGSize(width: btn.frame.width+label2.frame.width+10, height: 30) | ||
80 | + backView.center = CGPoint(x: header.center.x-10, y: label.frame.maxY+10) | ||
81 | + header.frame.size.height = backView.frame.maxY + 10 | ||
82 | + header.addSubview(backView) | ||
83 | + } | ||
84 | + | ||
85 | + webBrowserView = webView.scrollView.subviews[0] | ||
86 | + var rect = self.webBrowserView.frame | ||
87 | + rect.origin.y = header.frame.maxY+10 | ||
88 | + webBrowserView.frame = rect | ||
89 | + | ||
90 | + //添加 | ||
91 | + webView.scrollView.addSubview(header) | ||
92 | + | ||
93 | + webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) | ||
94 | + | ||
95 | + // Do any additional setup after loading the view. | ||
96 | + } | ||
97 | + | ||
98 | + @objc func pushToAppStore(){ | ||
99 | + | ||
100 | + } | ||
101 | + | ||
102 | + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { | ||
103 | + webView.scrollView.removeObserver(self, forKeyPath: "contentSize") | ||
104 | + _ = self.view.viewWithTag(100) | ||
105 | + let contentSize = webView.scrollView.contentSize | ||
106 | + let vi = UIView() | ||
107 | + vi.backgroundColor = UIColor.purple | ||
108 | + vi.tag = 100 | ||
109 | + vi.frame = CGRect(x: 0, y: contentSize.height, width: getScreenWidth()-20, height: 150) | ||
110 | + webView.scrollView.addSubview(vi) | ||
111 | + webView.scrollView.contentSize = CGSize(width: contentSize.width, height: contentSize.height+150) | ||
112 | + | ||
113 | + webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) | ||
114 | + | ||
115 | + } | ||
116 | + | ||
117 | + override func didReceiveMemoryWarning() { | ||
118 | + super.didReceiveMemoryWarning() | ||
119 | + // Dispose of any resources that can be recreated. | ||
120 | + } | ||
121 | + | ||
122 | + | ||
123 | + /* | ||
124 | + // MARK: - Navigation | ||
125 | + | ||
126 | + // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
127 | + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
128 | + // Get the new view controller using segue.destinationViewController. | ||
129 | + // Pass the selected object to the new view controller. | ||
130 | + } | ||
131 | + */ | ||
132 | + | ||
133 | +} |
ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/InvitationCodeVerificationViewController.swift
0 → 100644
@@ -0,0 +1,58 @@ | @@ -0,0 +1,58 @@ | ||
1 | +// | ||
2 | +// InvitationCodeVerificationViewController.swift | ||
3 | +// ParentAssistant | ||
4 | +// | ||
5 | +// Created by 左丞 on 2018/3/13. | ||
6 | +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class InvitationCodeVerificationViewController: UIViewController ,UITextFieldDelegate{ | ||
12 | + | ||
13 | + @IBOutlet weak var instructions: UILabel! | ||
14 | + @IBOutlet weak var nextBtn: UIButton! | ||
15 | + @IBOutlet weak var inputInvitationCode: UITextField! | ||
16 | + var school:School! | ||
17 | + override func viewDidLoad() { | ||
18 | + super.viewDidLoad() | ||
19 | + instructions.text = "注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证)\n\n如不知道邀请码请拨打电话: 400-826-2468进行查询" | ||
20 | + nextBtn.layer.cornerRadius = 10 | ||
21 | + nextBtn.layer.masksToBounds = true | ||
22 | + | ||
23 | + // Do any additional setup after loading the view. | ||
24 | + } | ||
25 | + | ||
26 | + override func didReceiveMemoryWarning() { | ||
27 | + super.didReceiveMemoryWarning() | ||
28 | + // Dispose of any resources that can be recreated. | ||
29 | + } | ||
30 | + | ||
31 | + @IBAction func nextBtnClick(_ sender: UIButton) { | ||
32 | + if inputInvitationCode.text != ""{ | ||
33 | + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
34 | + vc.from = .reserved | ||
35 | + vc.school = school! | ||
36 | + self.navigationController?.pushViewController(vc, animated: true) | ||
37 | + }else{ | ||
38 | + appDelegate.window!.makeToast("请填写邀请码") | ||
39 | + return | ||
40 | + } | ||
41 | + } | ||
42 | + | ||
43 | + func textFieldShouldReturn(_ textField: UITextField) -> Bool { | ||
44 | + textField.resignFirstResponder() | ||
45 | + return true | ||
46 | + } | ||
47 | + | ||
48 | + /* | ||
49 | + // MARK: - Navigation | ||
50 | + | ||
51 | + // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
52 | + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
53 | + // Get the new view controller using segue.destinationViewController. | ||
54 | + // Pass the selected object to the new view controller. | ||
55 | + } | ||
56 | + */ | ||
57 | + | ||
58 | +} |
ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/UserCenter.storyboard
0 → 100644
@@ -0,0 +1,606 @@ | @@ -0,0 +1,606 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
3 | + <device id="retina4_7" orientation="portrait"> | ||
4 | + <adaptation id="fullscreen"/> | ||
5 | + </device> | ||
6 | + <dependencies> | ||
7 | + <deployment identifier="iOS"/> | ||
8 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/> | ||
9 | + <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> | ||
10 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
11 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
12 | + </dependencies> | ||
13 | + <scenes> | ||
14 | + <!--Binding View Controller--> | ||
15 | + <scene sceneID="MIJ-WH-73A"> | ||
16 | + <objects> | ||
17 | + <viewController storyboardIdentifier="BindingViewControllerVC" id="SC7-Z5-TUk" customClass="BindingViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
18 | + <view key="view" contentMode="scaleToFill" id="wHn-CF-kHg"> | ||
19 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
20 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
21 | + <subviews> | ||
22 | + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P0w-Y3-Nux"> | ||
23 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
24 | + <subviews> | ||
25 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XNG-cS-DCX" customClass="UIControl"> | ||
26 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
27 | + <subviews> | ||
28 | + <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="绑定手机号码为" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="REL-rO-sBE"> | ||
29 | + <rect key="frame" x="126.5" y="20" width="121.5" height="21"/> | ||
30 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
31 | + <nil key="textColor"/> | ||
32 | + <nil key="highlightedColor"/> | ||
33 | + </label> | ||
34 | + <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1j1-yS-AS0"> | ||
35 | + <rect key="frame" x="187.5" y="61" width="0.0" height="0.0"/> | ||
36 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
37 | + <color key="textColor" red="0.95294117649999999" green="0.044139709020000001" blue="0.0" alpha="0.90402160229999995" colorSpace="calibratedRGB"/> | ||
38 | + <nil key="highlightedColor"/> | ||
39 | + </label> | ||
40 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lry-ZD-jrQ"> | ||
41 | + <rect key="frame" x="67.5" y="81" width="240" height="40"/> | ||
42 | + <subviews> | ||
43 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="孩子姓名:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SzI-3b-VyZ"> | ||
44 | + <rect key="frame" x="8" y="9.5" width="75" height="21"/> | ||
45 | + <constraints> | ||
46 | + <constraint firstAttribute="width" constant="75" id="1Kz-c2-cWk"/> | ||
47 | + </constraints> | ||
48 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
49 | + <nil key="textColor"/> | ||
50 | + <nil key="highlightedColor"/> | ||
51 | + </label> | ||
52 | + <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="BcE-Vi-QYk"> | ||
53 | + <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
54 | + <nil key="textColor"/> | ||
55 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
56 | + <textInputTraits key="textInputTraits"/> | ||
57 | + <connections> | ||
58 | + <outlet property="delegate" destination="SC7-Z5-TUk" id="OOq-YY-QL7"/> | ||
59 | + </connections> | ||
60 | + </textField> | ||
61 | + </subviews> | ||
62 | + <constraints> | ||
63 | + <constraint firstItem="BcE-Vi-QYk" firstAttribute="centerY" secondItem="Lry-ZD-jrQ" secondAttribute="centerY" id="UQx-st-B52"/> | ||
64 | + <constraint firstItem="BcE-Vi-QYk" firstAttribute="leading" secondItem="SzI-3b-VyZ" secondAttribute="trailing" constant="8" id="giU-FF-BVf"/> | ||
65 | + <constraint firstAttribute="width" constant="240" id="nln-YE-aUo"/> | ||
66 | + <constraint firstItem="SzI-3b-VyZ" firstAttribute="centerY" secondItem="Lry-ZD-jrQ" secondAttribute="centerY" id="t0S-VJ-l1C"/> | ||
67 | + <constraint firstAttribute="trailing" secondItem="BcE-Vi-QYk" secondAttribute="trailing" constant="8" id="yQh-ty-91f"/> | ||
68 | + <constraint firstItem="SzI-3b-VyZ" firstAttribute="leading" secondItem="Lry-ZD-jrQ" secondAttribute="leading" constant="8" id="z2C-7R-Ub1"/> | ||
69 | + </constraints> | ||
70 | + </view> | ||
71 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kxt-bL-oiI"> | ||
72 | + <rect key="frame" x="67.5" y="129" width="240" height="40"/> | ||
73 | + <subviews> | ||
74 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="性 别:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gRs-dx-ci7"> | ||
75 | + <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
76 | + <constraints> | ||
77 | + <constraint firstAttribute="width" constant="75" id="eVY-WV-LHm"/> | ||
78 | + </constraints> | ||
79 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
80 | + <nil key="textColor"/> | ||
81 | + <nil key="highlightedColor"/> | ||
82 | + </label> | ||
83 | + <view tag="1000" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PFs-Tj-G2K"> | ||
84 | + <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
85 | + <subviews> | ||
86 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8EC-X6-bwJ"> | ||
87 | + <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
88 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
89 | + <nil key="textColor"/> | ||
90 | + <nil key="highlightedColor"/> | ||
91 | + </label> | ||
92 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="t7C-GZ-zMI"> | ||
93 | + <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
94 | + <constraints> | ||
95 | + <constraint firstAttribute="width" secondItem="t7C-GZ-zMI" secondAttribute="height" multiplier="16:9" id="OER-9Z-gv9"/> | ||
96 | + <constraint firstAttribute="width" constant="20" id="UdM-aj-TjH"/> | ||
97 | + </constraints> | ||
98 | + </imageView> | ||
99 | + </subviews> | ||
100 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
101 | + <gestureRecognizers/> | ||
102 | + <constraints> | ||
103 | + <constraint firstItem="8EC-X6-bwJ" firstAttribute="leading" secondItem="PFs-Tj-G2K" secondAttribute="leading" id="5GC-Eb-4l2"/> | ||
104 | + <constraint firstItem="t7C-GZ-zMI" firstAttribute="leading" secondItem="8EC-X6-bwJ" secondAttribute="trailing" id="EZX-dZ-q37"/> | ||
105 | + <constraint firstAttribute="trailing" secondItem="t7C-GZ-zMI" secondAttribute="trailing" id="GFx-iV-h2I"/> | ||
106 | + <constraint firstItem="t7C-GZ-zMI" firstAttribute="centerY" secondItem="PFs-Tj-G2K" secondAttribute="centerY" id="Jft-CZ-Ozm"/> | ||
107 | + <constraint firstAttribute="height" constant="30" id="Xqc-eU-7Pr"/> | ||
108 | + <constraint firstItem="8EC-X6-bwJ" firstAttribute="top" secondItem="PFs-Tj-G2K" secondAttribute="top" id="qyh-NB-CVP"/> | ||
109 | + <constraint firstAttribute="bottom" secondItem="8EC-X6-bwJ" secondAttribute="bottom" id="wv5-4S-ql7"/> | ||
110 | + </constraints> | ||
111 | + <connections> | ||
112 | + <outletCollection property="gestureRecognizers" destination="LEy-66-xfv" appends="YES" id="cXM-sF-jrH"/> | ||
113 | + </connections> | ||
114 | + </view> | ||
115 | + </subviews> | ||
116 | + <constraints> | ||
117 | + <constraint firstItem="gRs-dx-ci7" firstAttribute="leading" secondItem="kxt-bL-oiI" secondAttribute="leading" constant="8" id="1U3-kg-RuV"/> | ||
118 | + <constraint firstAttribute="trailing" secondItem="PFs-Tj-G2K" secondAttribute="trailing" constant="8" id="NSH-fs-D3q"/> | ||
119 | + <constraint firstItem="PFs-Tj-G2K" firstAttribute="centerY" secondItem="kxt-bL-oiI" secondAttribute="centerY" id="Sgo-zl-RVe"/> | ||
120 | + <constraint firstItem="PFs-Tj-G2K" firstAttribute="leading" secondItem="gRs-dx-ci7" secondAttribute="trailing" constant="8" id="jlC-sf-cUB"/> | ||
121 | + <constraint firstItem="gRs-dx-ci7" firstAttribute="centerY" secondItem="kxt-bL-oiI" secondAttribute="centerY" id="y97-EE-VAy"/> | ||
122 | + </constraints> | ||
123 | + </view> | ||
124 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O93-Li-jET"> | ||
125 | + <rect key="frame" x="67.5" y="177" width="240" height="40"/> | ||
126 | + <subviews> | ||
127 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="年 级:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yBZ-0b-pQ9"> | ||
128 | + <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
129 | + <constraints> | ||
130 | + <constraint firstAttribute="width" constant="75" id="dqs-ha-x8B"/> | ||
131 | + </constraints> | ||
132 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
133 | + <nil key="textColor"/> | ||
134 | + <nil key="highlightedColor"/> | ||
135 | + </label> | ||
136 | + <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GuO-ah-aM3"> | ||
137 | + <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
138 | + <subviews> | ||
139 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k8w-na-ShO"> | ||
140 | + <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
141 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
142 | + <nil key="textColor"/> | ||
143 | + <nil key="highlightedColor"/> | ||
144 | + </label> | ||
145 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="u8y-wv-95T"> | ||
146 | + <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
147 | + <constraints> | ||
148 | + <constraint firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="height" multiplier="16:9" id="PpX-an-Mcx"/> | ||
149 | + </constraints> | ||
150 | + </imageView> | ||
151 | + </subviews> | ||
152 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
153 | + <gestureRecognizers/> | ||
154 | + <constraints> | ||
155 | + <constraint firstItem="k8w-na-ShO" firstAttribute="leading" secondItem="GuO-ah-aM3" secondAttribute="leading" id="1YM-Gx-c1v"/> | ||
156 | + <constraint firstItem="u8y-wv-95T" firstAttribute="leading" secondItem="k8w-na-ShO" secondAttribute="trailing" id="DZ0-WJ-MkY"/> | ||
157 | + <constraint firstAttribute="bottom" secondItem="k8w-na-ShO" secondAttribute="bottom" id="J2d-vN-CP1"/> | ||
158 | + <constraint firstItem="k8w-na-ShO" firstAttribute="top" secondItem="GuO-ah-aM3" secondAttribute="top" id="PWZ-ai-sko"/> | ||
159 | + <constraint firstItem="u8y-wv-95T" firstAttribute="centerY" secondItem="GuO-ah-aM3" secondAttribute="centerY" id="f4o-vC-bln"/> | ||
160 | + <constraint firstAttribute="trailing" secondItem="u8y-wv-95T" secondAttribute="trailing" id="mU3-LE-4dM"/> | ||
161 | + <constraint firstAttribute="height" constant="30" id="rIk-SK-yBP"/> | ||
162 | + </constraints> | ||
163 | + <connections> | ||
164 | + <outletCollection property="gestureRecognizers" destination="Kts-0O-pak" appends="YES" id="hUj-y5-jMs"/> | ||
165 | + </connections> | ||
166 | + </view> | ||
167 | + </subviews> | ||
168 | + <constraints> | ||
169 | + <constraint firstAttribute="trailing" secondItem="GuO-ah-aM3" secondAttribute="trailing" constant="8" id="3ye-AU-Wjq"/> | ||
170 | + <constraint firstItem="GuO-ah-aM3" firstAttribute="centerY" secondItem="O93-Li-jET" secondAttribute="centerY" id="S7j-Y1-iv2"/> | ||
171 | + <constraint firstItem="yBZ-0b-pQ9" firstAttribute="leading" secondItem="O93-Li-jET" secondAttribute="leading" constant="8" id="b6Z-BO-HDk"/> | ||
172 | + <constraint firstItem="yBZ-0b-pQ9" firstAttribute="centerY" secondItem="O93-Li-jET" secondAttribute="centerY" id="qdX-Ir-kHe"/> | ||
173 | + <constraint firstItem="GuO-ah-aM3" firstAttribute="leading" secondItem="yBZ-0b-pQ9" secondAttribute="trailing" constant="8" id="vGm-oD-Gs9"/> | ||
174 | + </constraints> | ||
175 | + </view> | ||
176 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hR4-GJ-ZLd"> | ||
177 | + <rect key="frame" x="67.5" y="225" width="240" height="40"/> | ||
178 | + <subviews> | ||
179 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="班 级:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qFh-7U-p8J"> | ||
180 | + <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
181 | + <constraints> | ||
182 | + <constraint firstAttribute="width" constant="75" id="4gg-6q-S4K"/> | ||
183 | + </constraints> | ||
184 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
185 | + <nil key="textColor"/> | ||
186 | + <nil key="highlightedColor"/> | ||
187 | + </label> | ||
188 | + <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FMa-hb-gaq"> | ||
189 | + <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
190 | + <subviews> | ||
191 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Ff-lb-IAz"> | ||
192 | + <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
193 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
194 | + <nil key="textColor"/> | ||
195 | + <nil key="highlightedColor"/> | ||
196 | + </label> | ||
197 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="sBB-lz-j4M"> | ||
198 | + <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
199 | + <constraints> | ||
200 | + <constraint firstAttribute="width" secondItem="sBB-lz-j4M" secondAttribute="height" multiplier="16:9" id="RK6-la-GUy"/> | ||
201 | + </constraints> | ||
202 | + </imageView> | ||
203 | + </subviews> | ||
204 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
205 | + <gestureRecognizers/> | ||
206 | + <constraints> | ||
207 | + <constraint firstItem="sBB-lz-j4M" firstAttribute="centerY" secondItem="FMa-hb-gaq" secondAttribute="centerY" id="Nlx-aL-9Cp"/> | ||
208 | + <constraint firstAttribute="bottom" secondItem="3Ff-lb-IAz" secondAttribute="bottom" id="PPf-rg-VMj"/> | ||
209 | + <constraint firstAttribute="trailing" secondItem="sBB-lz-j4M" secondAttribute="trailing" id="c92-Bb-fPa"/> | ||
210 | + <constraint firstAttribute="height" constant="30" id="cD7-29-sC3"/> | ||
211 | + <constraint firstItem="3Ff-lb-IAz" firstAttribute="leading" secondItem="FMa-hb-gaq" secondAttribute="leading" id="f9p-Mv-1bg"/> | ||
212 | + <constraint firstItem="3Ff-lb-IAz" firstAttribute="top" secondItem="FMa-hb-gaq" secondAttribute="top" id="hgk-HZ-k3t"/> | ||
213 | + <constraint firstItem="sBB-lz-j4M" firstAttribute="leading" secondItem="3Ff-lb-IAz" secondAttribute="trailing" id="tWR-Xb-CpO"/> | ||
214 | + </constraints> | ||
215 | + <connections> | ||
216 | + <outletCollection property="gestureRecognizers" destination="3FV-1x-Qsg" appends="YES" id="KTd-T3-ptA"/> | ||
217 | + </connections> | ||
218 | + </view> | ||
219 | + </subviews> | ||
220 | + <constraints> | ||
221 | + <constraint firstAttribute="height" constant="40" id="6Mp-oZ-kFS"/> | ||
222 | + <constraint firstItem="qFh-7U-p8J" firstAttribute="centerY" secondItem="hR4-GJ-ZLd" secondAttribute="centerY" id="6qw-zS-lTj"/> | ||
223 | + <constraint firstItem="qFh-7U-p8J" firstAttribute="leading" secondItem="hR4-GJ-ZLd" secondAttribute="leading" constant="8" id="A16-Da-Nml"/> | ||
224 | + <constraint firstItem="FMa-hb-gaq" firstAttribute="centerY" secondItem="hR4-GJ-ZLd" secondAttribute="centerY" id="ILl-xZ-ROc"/> | ||
225 | + <constraint firstAttribute="trailing" secondItem="FMa-hb-gaq" secondAttribute="trailing" constant="8" id="TC0-Yy-FbX"/> | ||
226 | + <constraint firstItem="FMa-hb-gaq" firstAttribute="leading" secondItem="qFh-7U-p8J" secondAttribute="trailing" constant="8" id="ePc-S7-FyD"/> | ||
227 | + </constraints> | ||
228 | + </view> | ||
229 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FqV-SD-Mvm"> | ||
230 | + <rect key="frame" x="112.5" y="285" width="150" height="33"/> | ||
231 | + <color key="backgroundColor" red="0.27503338459999999" green="0.50970917940000005" blue="0.90092128520000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
232 | + <constraints> | ||
233 | + <constraint firstAttribute="width" constant="150" id="UyA-XG-HPW"/> | ||
234 | + </constraints> | ||
235 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
236 | + <state key="normal" title="确定"> | ||
237 | + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
238 | + </state> | ||
239 | + <connections> | ||
240 | + <action selector="confirmBtnClcik:" destination="SC7-Z5-TUk" eventType="touchUpInside" id="dYC-uT-Vwc"/> | ||
241 | + </connections> | ||
242 | + </button> | ||
243 | + <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="fmZ-BK-cei"> | ||
244 | + <rect key="frame" x="156" y="335" width="135" height="152"/> | ||
245 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
246 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
247 | + <prototypes> | ||
248 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="ScH-T2-JbL"> | ||
249 | + <rect key="frame" x="0.0" y="28" width="135" height="44"/> | ||
250 | + <autoresizingMask key="autoresizingMask"/> | ||
251 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="ScH-T2-JbL" id="Vdf-3J-cd1"> | ||
252 | + <rect key="frame" x="0.0" y="0.0" width="135" height="43.5"/> | ||
253 | + <autoresizingMask key="autoresizingMask"/> | ||
254 | + </tableViewCellContentView> | ||
255 | + </tableViewCell> | ||
256 | + </prototypes> | ||
257 | + <connections> | ||
258 | + <outlet property="dataSource" destination="SC7-Z5-TUk" id="Jiq-kB-gCm"/> | ||
259 | + <outlet property="delegate" destination="SC7-Z5-TUk" id="0AV-HO-e1k"/> | ||
260 | + </connections> | ||
261 | + </tableView> | ||
262 | + </subviews> | ||
263 | + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> | ||
264 | + <constraints> | ||
265 | + <constraint firstItem="REL-rO-sBE" firstAttribute="top" secondItem="XNG-cS-DCX" secondAttribute="top" constant="20" id="5ZV-2a-Qo0"/> | ||
266 | + <constraint firstItem="1j1-yS-AS0" firstAttribute="top" secondItem="REL-rO-sBE" secondAttribute="bottom" constant="20" id="5gv-QF-b7B"/> | ||
267 | + <constraint firstItem="O93-Li-jET" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="BJw-Fi-zqe"/> | ||
268 | + <constraint firstItem="Lry-ZD-jrQ" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="GdP-6p-9L5"/> | ||
269 | + <constraint firstItem="kxt-bL-oiI" firstAttribute="top" secondItem="Lry-ZD-jrQ" secondAttribute="bottom" constant="8" id="HxB-x6-iZq"/> | ||
270 | + <constraint firstItem="1j1-yS-AS0" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="Jd3-q2-0X8"/> | ||
271 | + <constraint firstItem="FqV-SD-Mvm" firstAttribute="top" secondItem="hR4-GJ-ZLd" secondAttribute="bottom" constant="20" id="M0T-AR-guZ"/> | ||
272 | + <constraint firstItem="O93-Li-jET" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="M5S-H4-w8q"/> | ||
273 | + <constraint firstItem="FqV-SD-Mvm" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="OFC-XX-Wzn"/> | ||
274 | + <constraint firstItem="hR4-GJ-ZLd" firstAttribute="top" secondItem="O93-Li-jET" secondAttribute="bottom" constant="8" id="Ou1-72-F83"/> | ||
275 | + <constraint firstItem="O93-Li-jET" firstAttribute="top" secondItem="kxt-bL-oiI" secondAttribute="bottom" constant="8" id="Sy6-4q-XeH"/> | ||
276 | + <constraint firstItem="hR4-GJ-ZLd" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="T4F-hh-BOa"/> | ||
277 | + <constraint firstItem="kxt-bL-oiI" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="WJy-dT-EXy"/> | ||
278 | + <constraint firstAttribute="height" constant="667" id="aXb-ZO-UyB"/> | ||
279 | + <constraint firstItem="t7C-GZ-zMI" firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="width" id="be8-xa-5G9"/> | ||
280 | + <constraint firstItem="sBB-lz-j4M" firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="width" id="eDv-01-DiQ"/> | ||
281 | + <constraint firstItem="Lry-ZD-jrQ" firstAttribute="top" secondItem="1j1-yS-AS0" secondAttribute="bottom" constant="20" id="geU-1c-IfY"/> | ||
282 | + <constraint firstItem="kxt-bL-oiI" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="jdh-cw-zpa"/> | ||
283 | + <constraint firstItem="kxt-bL-oiI" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="mGE-8p-MQY"/> | ||
284 | + <constraint firstItem="hR4-GJ-ZLd" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="rxP-pl-3Um"/> | ||
285 | + <constraint firstItem="O93-Li-jET" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="uyt-7c-LZX"/> | ||
286 | + <constraint firstItem="hR4-GJ-ZLd" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="wJT-yt-hLC"/> | ||
287 | + <constraint firstItem="REL-rO-sBE" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="xV9-gg-n1L"/> | ||
288 | + </constraints> | ||
289 | + <connections> | ||
290 | + <action selector="cancleSelectTableView:" destination="SC7-Z5-TUk" eventType="valueChanged" id="U7F-UF-iuZ"/> | ||
291 | + </connections> | ||
292 | + </view> | ||
293 | + </subviews> | ||
294 | + <constraints> | ||
295 | + <constraint firstAttribute="bottom" secondItem="XNG-cS-DCX" secondAttribute="bottom" id="GpA-U6-Grn"/> | ||
296 | + <constraint firstItem="XNG-cS-DCX" firstAttribute="top" secondItem="P0w-Y3-Nux" secondAttribute="top" id="LBb-SE-77O"/> | ||
297 | + <constraint firstItem="XNG-cS-DCX" firstAttribute="leading" secondItem="P0w-Y3-Nux" secondAttribute="leading" id="Mkw-GK-7L3"/> | ||
298 | + <constraint firstAttribute="trailing" secondItem="XNG-cS-DCX" secondAttribute="trailing" id="Tve-bM-QyB"/> | ||
299 | + <constraint firstItem="XNG-cS-DCX" firstAttribute="centerX" secondItem="P0w-Y3-Nux" secondAttribute="centerX" id="tYI-cc-gNF"/> | ||
300 | + </constraints> | ||
301 | + </scrollView> | ||
302 | + </subviews> | ||
303 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
304 | + <constraints> | ||
305 | + <constraint firstItem="P0w-Y3-Nux" firstAttribute="top" secondItem="wHn-CF-kHg" secondAttribute="top" id="2qF-RX-Ngk"/> | ||
306 | + <constraint firstItem="P0w-Y3-Nux" firstAttribute="leading" secondItem="prJ-Io-sHC" secondAttribute="leading" id="90x-M3-dT7"/> | ||
307 | + <constraint firstItem="P0w-Y3-Nux" firstAttribute="bottom" secondItem="prJ-Io-sHC" secondAttribute="bottom" id="WnC-bM-yOh"/> | ||
308 | + <constraint firstItem="P0w-Y3-Nux" firstAttribute="trailing" secondItem="prJ-Io-sHC" secondAttribute="trailing" id="sQx-XF-5At"/> | ||
309 | + </constraints> | ||
310 | + <viewLayoutGuide key="safeArea" id="prJ-Io-sHC"/> | ||
311 | + </view> | ||
312 | + <connections> | ||
313 | + <outlet property="classLabel" destination="3Ff-lb-IAz" id="3vZ-RG-Kl0"/> | ||
314 | + <outlet property="confirmBtn" destination="FqV-SD-Mvm" id="2ks-S7-aw2"/> | ||
315 | + <outlet property="firstLineLabel" destination="REL-rO-sBE" id="sHm-br-6ch"/> | ||
316 | + <outlet property="genderLabel" destination="8EC-X6-bwJ" id="mGD-Vp-XO4"/> | ||
317 | + <outlet property="gradeLabel" destination="k8w-na-ShO" id="0SC-ja-Ycq"/> | ||
318 | + <outlet property="nameTextFiled" destination="BcE-Vi-QYk" id="P6F-fb-c0Z"/> | ||
319 | + <outlet property="phoneNumberLabel" destination="1j1-yS-AS0" id="ro7-AV-8eQ"/> | ||
320 | + <outlet property="selectImageHeight" destination="UdM-aj-TjH" id="FDT-0C-lMv"/> | ||
321 | + <outlet property="selectTableView" destination="fmZ-BK-cei" id="WKi-76-ydS"/> | ||
322 | + </connections> | ||
323 | + </viewController> | ||
324 | + <placeholder placeholderIdentifier="IBFirstResponder" id="gtY-da-H8P" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
325 | + <tapGestureRecognizer id="LEy-66-xfv"> | ||
326 | + <connections> | ||
327 | + <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="Nbe-mO-VOd"/> | ||
328 | + </connections> | ||
329 | + </tapGestureRecognizer> | ||
330 | + <tapGestureRecognizer id="Kts-0O-pak"> | ||
331 | + <connections> | ||
332 | + <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="8Rk-RM-Grb"/> | ||
333 | + </connections> | ||
334 | + </tapGestureRecognizer> | ||
335 | + <tapGestureRecognizer id="3FV-1x-Qsg"> | ||
336 | + <connections> | ||
337 | + <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="ETG-1g-7Jk"/> | ||
338 | + </connections> | ||
339 | + </tapGestureRecognizer> | ||
340 | + </objects> | ||
341 | + <point key="canvasLocation" x="77.599999999999994" y="118.29085457271366"/> | ||
342 | + </scene> | ||
343 | + <!--选择孩子学校--> | ||
344 | + <scene sceneID="jXC-xr-pan"> | ||
345 | + <objects> | ||
346 | + <viewController storyboardIdentifier="BaseCityChooseSchoolViewControllerVC" id="A0M-q7-IGT" customClass="BaseCityChooseSchoolViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
347 | + <view key="view" contentMode="scaleToFill" id="Onv-g3-veb"> | ||
348 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
349 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
350 | + <subviews> | ||
351 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fO6-Ah-i0n"> | ||
352 | + <rect key="frame" x="0.0" y="64" width="375" height="40"/> | ||
353 | + <subviews> | ||
354 | + <searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="l2p-Iw-hkv"> | ||
355 | + <rect key="frame" x="40" y="0.0" width="335" height="40"/> | ||
356 | + <textInputTraits key="textInputTraits"/> | ||
357 | + <scopeButtonTitles> | ||
358 | + <string>Title</string> | ||
359 | + <string>Title</string> | ||
360 | + </scopeButtonTitles> | ||
361 | + <connections> | ||
362 | + <outlet property="delegate" destination="A0M-q7-IGT" id="e7y-Ov-FN3"/> | ||
363 | + </connections> | ||
364 | + </searchBar> | ||
365 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DOI-gH-jce"> | ||
366 | + <rect key="frame" x="0.0" y="0.0" width="40" height="40"/> | ||
367 | + <subviews> | ||
368 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5U5-yq-C0i"> | ||
369 | + <rect key="frame" x="8" y="20.5" width="0.0" height="0.0"/> | ||
370 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
371 | + <nil key="textColor"/> | ||
372 | + <nil key="highlightedColor"/> | ||
373 | + </label> | ||
374 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="orB-P1-43H"> | ||
375 | + <rect key="frame" x="16" y="15.5" width="16" height="9"/> | ||
376 | + <constraints> | ||
377 | + <constraint firstAttribute="width" constant="16" id="16l-ae-SRY"/> | ||
378 | + <constraint firstAttribute="width" secondItem="orB-P1-43H" secondAttribute="height" multiplier="16:9" id="LTF-6F-1BK"/> | ||
379 | + </constraints> | ||
380 | + </imageView> | ||
381 | + </subviews> | ||
382 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
383 | + <gestureRecognizers/> | ||
384 | + <constraints> | ||
385 | + <constraint firstItem="orB-P1-43H" firstAttribute="centerY" secondItem="DOI-gH-jce" secondAttribute="centerY" id="9zk-rO-Bal"/> | ||
386 | + <constraint firstAttribute="trailing" secondItem="orB-P1-43H" secondAttribute="trailing" constant="8" id="BzP-Md-pmS"/> | ||
387 | + <constraint firstItem="5U5-yq-C0i" firstAttribute="centerY" secondItem="DOI-gH-jce" secondAttribute="centerY" id="XUR-oK-Eac"/> | ||
388 | + <constraint firstItem="5U5-yq-C0i" firstAttribute="leading" secondItem="DOI-gH-jce" secondAttribute="leading" constant="8" id="jlC-4X-vmT"/> | ||
389 | + <constraint firstItem="orB-P1-43H" firstAttribute="leading" secondItem="5U5-yq-C0i" secondAttribute="trailing" constant="8" id="pIv-Pk-p8P"/> | ||
390 | + </constraints> | ||
391 | + <connections> | ||
392 | + <outletCollection property="gestureRecognizers" destination="bwD-zo-BfW" appends="YES" id="lGg-fA-w9g"/> | ||
393 | + </connections> | ||
394 | + </view> | ||
395 | + </subviews> | ||
396 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
397 | + <constraints> | ||
398 | + <constraint firstItem="DOI-gH-jce" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="top" id="0Hd-29-n1m"/> | ||
399 | + <constraint firstAttribute="bottom" secondItem="DOI-gH-jce" secondAttribute="bottom" id="0io-Qu-M8N"/> | ||
400 | + <constraint firstAttribute="bottom" secondItem="l2p-Iw-hkv" secondAttribute="bottom" id="27M-dQ-JQa"/> | ||
401 | + <constraint firstItem="DOI-gH-jce" firstAttribute="leading" secondItem="fO6-Ah-i0n" secondAttribute="leading" id="E9W-AB-f3d"/> | ||
402 | + <constraint firstItem="l2p-Iw-hkv" firstAttribute="leading" secondItem="DOI-gH-jce" secondAttribute="trailing" id="PBH-yX-Ii2"/> | ||
403 | + <constraint firstAttribute="height" constant="40" id="cB5-m3-OT4"/> | ||
404 | + <constraint firstAttribute="trailing" secondItem="l2p-Iw-hkv" secondAttribute="trailing" id="mxk-0g-vX5"/> | ||
405 | + <constraint firstItem="l2p-Iw-hkv" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="top" id="q7F-zS-lRk"/> | ||
406 | + </constraints> | ||
407 | + </view> | ||
408 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K6J-Tc-LTg"> | ||
409 | + <rect key="frame" x="0.0" y="617" width="375" height="50"/> | ||
410 | + <subviews> | ||
411 | + <button opaque="NO" alpha="0.60000002384185791" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0O9-fu-b9g"> | ||
412 | + <rect key="frame" x="8" y="12" width="359" height="30"/> | ||
413 | + <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
414 | + <state key="normal" title="下一步"> | ||
415 | + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
416 | + </state> | ||
417 | + <userDefinedRuntimeAttributes> | ||
418 | + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> | ||
419 | + <integer key="value" value="10"/> | ||
420 | + </userDefinedRuntimeAttribute> | ||
421 | + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> | ||
422 | + </userDefinedRuntimeAttributes> | ||
423 | + <connections> | ||
424 | + <action selector="nextStep:" destination="A0M-q7-IGT" eventType="touchUpInside" id="XgW-aA-1mG"/> | ||
425 | + </connections> | ||
426 | + </button> | ||
427 | + </subviews> | ||
428 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
429 | + <constraints> | ||
430 | + <constraint firstAttribute="height" constant="50" id="BQ4-Si-bXm"/> | ||
431 | + <constraint firstItem="0O9-fu-b9g" firstAttribute="leading" secondItem="K6J-Tc-LTg" secondAttribute="leading" constant="8" id="ifw-4f-Jpr"/> | ||
432 | + <constraint firstAttribute="trailing" secondItem="0O9-fu-b9g" secondAttribute="trailing" constant="8" id="isL-T7-Qmd"/> | ||
433 | + <constraint firstAttribute="bottom" secondItem="0O9-fu-b9g" secondAttribute="bottom" constant="8" id="nFg-EW-rQa"/> | ||
434 | + </constraints> | ||
435 | + </view> | ||
436 | + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="PtW-3t-0kg"> | ||
437 | + <rect key="frame" x="0.0" y="104" width="375" height="513"/> | ||
438 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
439 | + <view key="tableFooterView" contentMode="scaleToFill" id="EaE-p5-h1S"> | ||
440 | + <rect key="frame" x="0.0" y="72" width="375" height="1"/> | ||
441 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
442 | + </view> | ||
443 | + <prototypes> | ||
444 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="aLu-j4-6rM" customClass="SelectSchoolList" customModule="ParentAssistant" customModuleProvider="target"> | ||
445 | + <rect key="frame" x="0.0" y="28" width="375" height="44"/> | ||
446 | + <autoresizingMask key="autoresizingMask"/> | ||
447 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="aLu-j4-6rM" id="HwG-k5-D6B"> | ||
448 | + <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> | ||
449 | + <autoresizingMask key="autoresizingMask"/> | ||
450 | + <subviews> | ||
451 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mu7-8F-D7t"> | ||
452 | + <rect key="frame" x="20" y="12" width="42" height="21"/> | ||
453 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
454 | + <nil key="textColor"/> | ||
455 | + <nil key="highlightedColor"/> | ||
456 | + </label> | ||
457 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_icon_confirmBtn" translatesAutoresizingMaskIntoConstraints="NO" id="uQB-I2-g76"> | ||
458 | + <rect key="frame" x="335" y="11" width="20" height="20"/> | ||
459 | + <constraints> | ||
460 | + <constraint firstAttribute="height" constant="20" id="O5D-Kd-tnC"/> | ||
461 | + <constraint firstAttribute="width" secondItem="uQB-I2-g76" secondAttribute="height" multiplier="1:1" id="cbI-Yt-6bN"/> | ||
462 | + </constraints> | ||
463 | + </imageView> | ||
464 | + </subviews> | ||
465 | + <constraints> | ||
466 | + <constraint firstItem="mu7-8F-D7t" firstAttribute="leading" secondItem="HwG-k5-D6B" secondAttribute="leading" constant="20" id="Kok-DS-Yde"/> | ||
467 | + <constraint firstItem="uQB-I2-g76" firstAttribute="centerY" secondItem="HwG-k5-D6B" secondAttribute="centerY" id="cIw-K0-Exy"/> | ||
468 | + <constraint firstAttribute="trailing" secondItem="uQB-I2-g76" secondAttribute="trailing" constant="20" id="dVF-Dh-Rtt"/> | ||
469 | + <constraint firstItem="mu7-8F-D7t" firstAttribute="centerY" secondItem="HwG-k5-D6B" secondAttribute="centerY" id="fsT-mg-e1a"/> | ||
470 | + </constraints> | ||
471 | + </tableViewCellContentView> | ||
472 | + <connections> | ||
473 | + <outlet property="isSelect" destination="uQB-I2-g76" id="6wY-JR-T26"/> | ||
474 | + <outlet property="schoolName" destination="mu7-8F-D7t" id="wkp-Qv-j2n"/> | ||
475 | + </connections> | ||
476 | + </tableViewCell> | ||
477 | + </prototypes> | ||
478 | + <connections> | ||
479 | + <outlet property="dataSource" destination="A0M-q7-IGT" id="evO-ib-Hst"/> | ||
480 | + <outlet property="delegate" destination="A0M-q7-IGT" id="Rbx-Y9-br6"/> | ||
481 | + </connections> | ||
482 | + </tableView> | ||
483 | + </subviews> | ||
484 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
485 | + <constraints> | ||
486 | + <constraint firstItem="fO6-Ah-i0n" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="1DX-T5-eqS"/> | ||
487 | + <constraint firstItem="fO6-Ah-i0n" firstAttribute="top" secondItem="UOZ-dT-HdH" secondAttribute="top" id="5SW-dU-bex"/> | ||
488 | + <constraint firstItem="K6J-Tc-LTg" firstAttribute="top" secondItem="PtW-3t-0kg" secondAttribute="bottom" id="DZi-5f-yJP"/> | ||
489 | + <constraint firstItem="fO6-Ah-i0n" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="OTH-hT-IuC"/> | ||
490 | + <constraint firstItem="PtW-3t-0kg" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="SRU-Mk-axC"/> | ||
491 | + <constraint firstItem="PtW-3t-0kg" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="bottom" id="abD-i3-Y6w"/> | ||
492 | + <constraint firstItem="K6J-Tc-LTg" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="jJc-Sd-TbD"/> | ||
493 | + <constraint firstItem="K6J-Tc-LTg" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="jWn-SM-Y1N"/> | ||
494 | + <constraint firstItem="K6J-Tc-LTg" firstAttribute="bottom" secondItem="UOZ-dT-HdH" secondAttribute="bottom" id="kZg-15-tgT"/> | ||
495 | + <constraint firstItem="PtW-3t-0kg" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="vLD-zI-Vju"/> | ||
496 | + </constraints> | ||
497 | + <viewLayoutGuide key="safeArea" id="UOZ-dT-HdH"/> | ||
498 | + </view> | ||
499 | + <navigationItem key="navigationItem" title="选择孩子学校" id="Zis-r1-2ac"/> | ||
500 | + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/> | ||
501 | + <connections> | ||
502 | + <outlet property="citySelectbtn" destination="5U5-yq-C0i" id="wfB-6U-FyP"/> | ||
503 | + <outlet property="tableView" destination="PtW-3t-0kg" id="VaJ-gB-cEX"/> | ||
504 | + </connections> | ||
505 | + </viewController> | ||
506 | + <placeholder placeholderIdentifier="IBFirstResponder" id="cjH-Fa-jy0" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
507 | + <tapGestureRecognizer id="bwD-zo-BfW"> | ||
508 | + <connections> | ||
509 | + <action selector="citySelectBtnClick:" destination="A0M-q7-IGT" id="UOI-JJ-Wj0"/> | ||
510 | + </connections> | ||
511 | + </tapGestureRecognizer> | ||
512 | + </objects> | ||
513 | + <point key="canvasLocation" x="844" y="117.39130434782609"/> | ||
514 | + </scene> | ||
515 | + <!--Invitation Code Verification View Controller--> | ||
516 | + <scene sceneID="O88-W5-BCB"> | ||
517 | + <objects> | ||
518 | + <viewController storyboardIdentifier="InvitationCodeVerificationViewControllerVC" id="R3o-G2-oUv" customClass="InvitationCodeVerificationViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
519 | + <view key="view" contentMode="scaleToFill" id="AKW-ZX-X2g"> | ||
520 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
521 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
522 | + <subviews> | ||
523 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="exA-el-IFq"> | ||
524 | + <rect key="frame" x="0.0" y="108.5" width="375" height="250"/> | ||
525 | + <subviews> | ||
526 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1fW-dv-WoM"> | ||
527 | + <rect key="frame" x="112.5" y="77" width="150" height="30"/> | ||
528 | + <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
529 | + <constraints> | ||
530 | + <constraint firstAttribute="height" constant="30" id="5hq-lI-iLz"/> | ||
531 | + <constraint firstAttribute="width" constant="150" id="BGF-TZ-RcW"/> | ||
532 | + </constraints> | ||
533 | + <state key="normal" title="下一步"> | ||
534 | + <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
535 | + </state> | ||
536 | + <connections> | ||
537 | + <action selector="nextBtnClick:" destination="R3o-G2-oUv" eventType="touchUpInside" id="F9Y-Wo-UFn"/> | ||
538 | + </connections> | ||
539 | + </button> | ||
540 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证) 如不知道邀请码请拨打电话: 400-123456进行查询" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cMY-Ua-Fom"> | ||
541 | + <rect key="frame" x="8" y="137" width="359" height="51"/> | ||
542 | + <fontDescription key="fontDescription" name=".PingFangSC-Regular" family=".PingFang SC" pointSize="17"/> | ||
543 | + <color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
544 | + <nil key="highlightedColor"/> | ||
545 | + </label> | ||
546 | + <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="填写邀请码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vQA-t4-Eci"> | ||
547 | + <rect key="frame" x="8" y="8" width="360" height="30"/> | ||
548 | + <constraints> | ||
549 | + <constraint firstAttribute="height" constant="30" id="uUH-o5-0a7"/> | ||
550 | + </constraints> | ||
551 | + <nil key="textColor"/> | ||
552 | + <fontDescription key="fontDescription" type="system" pointSize="14"/> | ||
553 | + <textInputTraits key="textInputTraits"/> | ||
554 | + <connections> | ||
555 | + <outlet property="delegate" destination="R3o-G2-oUv" id="RKR-2s-gS5"/> | ||
556 | + </connections> | ||
557 | + </textField> | ||
558 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aPt-HX-Yq3"> | ||
559 | + <rect key="frame" x="8" y="46" width="359" height="1"/> | ||
560 | + <color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
561 | + <constraints> | ||
562 | + <constraint firstAttribute="height" constant="1" id="gz9-PX-2oM"/> | ||
563 | + </constraints> | ||
564 | + </view> | ||
565 | + </subviews> | ||
566 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
567 | + <constraints> | ||
568 | + <constraint firstItem="vQA-t4-Eci" firstAttribute="top" secondItem="exA-el-IFq" secondAttribute="top" constant="8" id="5Uu-Sy-vu0"/> | ||
569 | + <constraint firstItem="aPt-HX-Yq3" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="7Ln-yD-VaY"/> | ||
570 | + <constraint firstItem="vQA-t4-Eci" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="7M5-Vx-2Cz"/> | ||
571 | + <constraint firstItem="aPt-HX-Yq3" firstAttribute="top" secondItem="vQA-t4-Eci" secondAttribute="bottom" constant="8" id="976-F3-2gJ"/> | ||
572 | + <constraint firstItem="1fW-dv-WoM" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="EMs-fL-FZD"/> | ||
573 | + <constraint firstItem="cMY-Ua-Fom" firstAttribute="top" secondItem="1fW-dv-WoM" secondAttribute="bottom" constant="30" id="Riq-Xq-a0K"/> | ||
574 | + <constraint firstItem="vQA-t4-Eci" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="db8-a4-dQ5"/> | ||
575 | + <constraint firstItem="cMY-Ua-Fom" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="pdC-1A-R0A"/> | ||
576 | + <constraint firstItem="1fW-dv-WoM" firstAttribute="top" secondItem="aPt-HX-Yq3" secondAttribute="bottom" constant="30" id="qW5-M9-wDD"/> | ||
577 | + <constraint firstAttribute="trailing" secondItem="aPt-HX-Yq3" secondAttribute="trailing" constant="8" id="uG6-EB-i2d"/> | ||
578 | + <constraint firstItem="cMY-Ua-Fom" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="uJO-jO-ou4"/> | ||
579 | + <constraint firstAttribute="height" constant="250" id="xqy-Zc-vv1"/> | ||
580 | + </constraints> | ||
581 | + </view> | ||
582 | + </subviews> | ||
583 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
584 | + <constraints> | ||
585 | + <constraint firstItem="exA-el-IFq" firstAttribute="leading" secondItem="fXU-yt-T3m" secondAttribute="leading" id="1HS-GB-jkp"/> | ||
586 | + <constraint firstItem="exA-el-IFq" firstAttribute="centerX" secondItem="AKW-ZX-X2g" secondAttribute="centerX" id="Auy-9z-eRw"/> | ||
587 | + <constraint firstItem="exA-el-IFq" firstAttribute="centerY" secondItem="AKW-ZX-X2g" secondAttribute="centerY" constant="-100" id="XKh-ba-xKc"/> | ||
588 | + </constraints> | ||
589 | + <viewLayoutGuide key="safeArea" id="fXU-yt-T3m"/> | ||
590 | + </view> | ||
591 | + <connections> | ||
592 | + <outlet property="inputInvitationCode" destination="vQA-t4-Eci" id="OSo-jl-2Ps"/> | ||
593 | + <outlet property="instructions" destination="cMY-Ua-Fom" id="Ofn-M3-LGa"/> | ||
594 | + <outlet property="nextBtn" destination="1fW-dv-WoM" id="Fne-zE-jM0"/> | ||
595 | + </connections> | ||
596 | + </viewController> | ||
597 | + <placeholder placeholderIdentifier="IBFirstResponder" id="a4n-d8-QFK" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
598 | + </objects> | ||
599 | + <point key="canvasLocation" x="1572" y="117.39130434782609"/> | ||
600 | + </scene> | ||
601 | + </scenes> | ||
602 | + <resources> | ||
603 | + <image name="evaluation_icon_pushDown" width="16" height="9"/> | ||
604 | + <image name="my_icon_confirmBtn" width="21" height="19"/> | ||
605 | + </resources> | ||
606 | +</document> |
ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BaseCityChooseSchoolViewController.swift
@@ -1,255 +0,0 @@ | @@ -1,255 +0,0 @@ | ||
1 | -// | ||
2 | -// BaseCityChooseSchoolViewController.swift | ||
3 | -// ParentAssistant | ||
4 | -// | ||
5 | -// Created by 左丞 on 2018/3/9. | ||
6 | -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | -// | ||
8 | - | ||
9 | -import UIKit | ||
10 | -class BaseCityChooseSchoolViewController: UIViewController,UISearchBarDelegate { | ||
11 | - | ||
12 | - @IBOutlet weak var tableView: UITableView! | ||
13 | - let firstLetterArr:[String] = ["#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] | ||
14 | - var keys:[String] = [] | ||
15 | - var schoolDic:[String:[School]] = [:] | ||
16 | - var schoolArray:[School] = [] | ||
17 | - @IBOutlet weak var citySelectbtn: UILabel! | ||
18 | - | ||
19 | - override func viewDidLoad() { | ||
20 | - super.viewDidLoad() | ||
21 | - | ||
22 | - citySelectbtn.text = localAddress | ||
23 | - getData() | ||
24 | - // Do any additional setup after loading the view. | ||
25 | - } | ||
26 | - | ||
27 | - //根据关键字获取学校 | ||
28 | - func getData(_ keyword:String=""){ | ||
29 | - var dic:[String:AnyObject] = ["areaName":localAddress as AnyObject,"keyword":keyword as AnyObject] | ||
30 | - if keyword == ""{ | ||
31 | - dic.removeValue(forKey: "keyword") | ||
32 | - } | ||
33 | - HTTPServer.shared.getAreaSchool(parameters: dic) { (str, error) in | ||
34 | - let json=JSON.fromString(str) | ||
35 | - if let ret=json{ | ||
36 | - let er=ret["error"].string | ||
37 | - if let errorStr=er{ | ||
38 | - appDelegate.window!.makeToast(errorStr) | ||
39 | - }else{ | ||
40 | - self.schoolArray.removeAll() | ||
41 | - for item in ret.contentData().arrayValue { | ||
42 | - self.schoolArray.append(School(j: item)) | ||
43 | - } | ||
44 | - self.sortData(self.schoolArray) | ||
45 | - } | ||
46 | - }else{ | ||
47 | - | ||
48 | - } | ||
49 | - } | ||
50 | - } | ||
51 | - | ||
52 | - //对给定的学校分组 | ||
53 | - func sortData(_ array:[School]){ | ||
54 | - schoolDic = [:] | ||
55 | - for letter in firstLetterArr { | ||
56 | - var arr:[School] = [] | ||
57 | - for school in array{ | ||
58 | - if String(format: "%c",pinyinFirstLetter((school.name as NSString).character(at: 0))).uppercased() == letter{ | ||
59 | - arr.append(school) | ||
60 | - } | ||
61 | - } | ||
62 | - if arr.count > 0{ | ||
63 | - schoolDic.updateValue(arr, forKey: letter) | ||
64 | - } | ||
65 | - } | ||
66 | - keys = Array(schoolDic.keys) | ||
67 | - keys.sort { (key1, key2) -> Bool in | ||
68 | - return key1 < key2 | ||
69 | - } | ||
70 | - tableView.reloadData() | ||
71 | - } | ||
72 | - | ||
73 | - override func didReceiveMemoryWarning() { | ||
74 | - super.didReceiveMemoryWarning() | ||
75 | - // Dispose of any resources that can be recreated. | ||
76 | - } | ||
77 | - | ||
78 | - //h获取已经选中的学校 | ||
79 | - func getSelectSchool() -> School? { | ||
80 | - for (_,item) in schoolDic{ | ||
81 | - for school in item{ | ||
82 | - if school.isSelect{ | ||
83 | - return school | ||
84 | - } | ||
85 | - } | ||
86 | - } | ||
87 | - return nil | ||
88 | - } | ||
89 | - | ||
90 | - //下一步 | ||
91 | - @IBAction func nextStep(_ sender: UIButton) { | ||
92 | - let school = getSelectSchool() | ||
93 | - if school == nil{ | ||
94 | - appDelegate.window!.makeToast("请先选择学校") | ||
95 | - return | ||
96 | - } | ||
97 | - if !AccountManager.shared.isOnline(){ | ||
98 | - appDelegate.window!.makeToast("请先登录") | ||
99 | - return | ||
100 | - } | ||
101 | - | ||
102 | - if school!.isNew == 1{ | ||
103 | - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
104 | - vc.from = .select | ||
105 | - vc.school = school! | ||
106 | - self.navigationController?.pushViewController(vc, animated: true) | ||
107 | - }else{ | ||
108 | - if AccountManager.shared.isNew() == 1{ | ||
109 | - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
110 | - vc.from = .unReserved | ||
111 | - vc.school = school! | ||
112 | - self.navigationController?.pushViewController(vc, animated: true) | ||
113 | - return | ||
114 | - } | ||
115 | - let vc = Story.instantiateViewControllerWithIdentifier("InvitationCodeVerificationViewControllerVC", storyName: "UserCenter") as! InvitationCodeVerificationViewController | ||
116 | - vc.school = school! | ||
117 | - self.navigationController?.pushViewController(vc, animated: true) | ||
118 | - | ||
119 | - } | ||
120 | - } | ||
121 | - | ||
122 | - func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { | ||
123 | - searchBar.showsCancelButton = true | ||
124 | - } | ||
125 | - | ||
126 | - func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { | ||
127 | - searchData(searchBar) | ||
128 | - } | ||
129 | - | ||
130 | - func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { | ||
131 | - searchData(searchBar) | ||
132 | - } | ||
133 | - | ||
134 | - //搜索学校 | ||
135 | - func searchData(_ searchBar: UISearchBar){ | ||
136 | - getData(searchBar.text!) | ||
137 | - searchBar.resignFirstResponder() | ||
138 | - searchBar.showsCancelButton = false | ||
139 | - | ||
140 | - } | ||
141 | - | ||
142 | - //左上角城市选择按钮点击事件 | ||
143 | - @IBAction func citySelectBtnClick(_ sender: UITapGestureRecognizer) { | ||
144 | - sender.view?.isUserInteractionEnabled = false | ||
145 | - LZCityPickerController.showPicker(in: self | ||
146 | - , select: { (address, province, city, area, isSelect) in | ||
147 | - if isSelect{ | ||
148 | - sender.view?.isUserInteractionEnabled = true | ||
149 | - self.selectCity(city: area!) | ||
150 | - } | ||
151 | - }) { | ||
152 | - sender.view?.isUserInteractionEnabled = true | ||
153 | - | ||
154 | - } | ||
155 | - } | ||
156 | - | ||
157 | - func selectCity(city: String) { | ||
158 | - localAddress = city | ||
159 | - | ||
160 | - citySelectbtn.text = city | ||
161 | - self.getData() | ||
162 | - } | ||
163 | - | ||
164 | - override func viewWillAppear(_ animated: Bool) { | ||
165 | - super.viewWillAppear(animated) | ||
166 | - citySelectbtn.text = localAddress | ||
167 | - } | ||
168 | - /* | ||
169 | - // MARK: - Navigation | ||
170 | - | ||
171 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
172 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
173 | - // Get the new view controller using segue.destinationViewController. | ||
174 | - // Pass the selected object to the new view controller. | ||
175 | - } | ||
176 | - */ | ||
177 | - | ||
178 | - //根据indexPath找到相对应的model | ||
179 | - func getSchoolByIndexpath(indexPath:IndexPath)->School{ | ||
180 | - return schoolDic[keys[indexPath.section]]![indexPath.row] | ||
181 | - | ||
182 | - } | ||
183 | - | ||
184 | - //所有数据全部取消选中 | ||
185 | - func changeSchoolSelectState(){ | ||
186 | - for (_,value) in schoolDic { | ||
187 | - for item in value{ | ||
188 | - item.isSelect = false | ||
189 | - } | ||
190 | - } | ||
191 | - } | ||
192 | -} | ||
193 | - | ||
194 | -extension BaseCityChooseSchoolViewController:UITableViewDelegate,UITableViewDataSource{ | ||
195 | - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
196 | - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SelectSchoolList | ||
197 | - let item = getSchoolByIndexpath(indexPath: indexPath) | ||
198 | - cell.schoolName.text = item.name | ||
199 | - if item.isSelect{ | ||
200 | - cell.isSelect.isHidden = false | ||
201 | - }else{ | ||
202 | - cell.isSelect.isHidden = true | ||
203 | - } | ||
204 | - return cell | ||
205 | - } | ||
206 | - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
207 | - | ||
208 | - return schoolDic[keys[section]]!.count | ||
209 | - } | ||
210 | - | ||
211 | - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
212 | - let item = getSchoolByIndexpath(indexPath: indexPath) | ||
213 | - changeSchoolSelectState() | ||
214 | - item.isSelect = !item.isSelect | ||
215 | - tableView.reloadData() | ||
216 | - } | ||
217 | - | ||
218 | - func sectionIndexTitles(for tableView: UITableView) -> [String]? { | ||
219 | - return keys | ||
220 | - } | ||
221 | - | ||
222 | - func numberOfSections(in tableView: UITableView) -> Int { | ||
223 | - return keys.count | ||
224 | - } | ||
225 | - | ||
226 | - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { | ||
227 | - return keys[section] | ||
228 | - } | ||
229 | -} | ||
230 | - | ||
231 | -class SelectSchoolList: UITableViewCell { | ||
232 | - | ||
233 | - @IBOutlet weak var isSelect: UIImageView! | ||
234 | - @IBOutlet weak var schoolName: UILabel! | ||
235 | -} | ||
236 | - | ||
237 | -class School:NSObject{ | ||
238 | - var schoolArea:String=""//学校所在地区 , | ||
239 | - var schoolId:Int = 0//学校id , | ||
240 | - var name:String=""//学校名称 , | ||
241 | - var state:Int=0//状态,1正常,0关闭 | ||
242 | - var isNew:Int=0////1非合作学校,0合作学校 | ||
243 | - var isSelect:Bool = false | ||
244 | - init(j:JSON){ | ||
245 | - schoolArea = j["school_area"].stringValue | ||
246 | - schoolId = j["school_id"].intValue | ||
247 | - name = j["school_name"].stringValue | ||
248 | - state = j["state"].intValue | ||
249 | - } | ||
250 | - init(names:String,id:Int) { | ||
251 | - name = names | ||
252 | - schoolId=id | ||
253 | - } | ||
254 | -} | ||
255 | - |
ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindingViewController.swift
@@ -1,344 +0,0 @@ | @@ -1,344 +0,0 @@ | ||
1 | -// | ||
2 | -// BindingViewController.swift | ||
3 | -// ParentAssistant | ||
4 | -// | ||
5 | -// Created by 左丞 on 2018/3/6. | ||
6 | -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | -// | ||
8 | - | ||
9 | -import UIKit | ||
10 | -enum FromVC:Int{ | ||
11 | - //信息确认 | ||
12 | - case selfVC = 1//从当前类的对象push过来的(非合作学校) | ||
13 | - case reserved = 2//合作学校预留 | ||
14 | - case unReserved = 3//合作学校非预留 | ||
15 | - //选择 | ||
16 | - case select = 4 //选择 | ||
17 | -} | ||
18 | - | ||
19 | -enum SelectType:Int{ | ||
20 | - case gender=1//性别 | ||
21 | - case grade=2//年级 | ||
22 | - case classes=3//班级 | ||
23 | -} | ||
24 | - | ||
25 | -class BindingViewController: UIViewController { | ||
26 | - | ||
27 | - var from:FromVC = .selfVC | ||
28 | - @IBOutlet weak var confirmBtn: UIButton!//确定按钮 | ||
29 | - @IBOutlet weak var phoneNumberLabel: UILabel!//电话号码显示的label | ||
30 | - @IBOutlet weak var firstLineLabel: UILabel!//第一行(绑定手机号码为)所在的label | ||
31 | - @IBOutlet weak var nameTextFiled: UITextField! | ||
32 | - | ||
33 | - @IBOutlet weak var selectTableView: UITableView! | ||
34 | - @IBOutlet weak var selectImageHeight: NSLayoutConstraint!//三个image高度是相等的 | ||
35 | - @IBOutlet weak var classLabel: UILabel! | ||
36 | - @IBOutlet weak var gradeLabel: UILabel! | ||
37 | - @IBOutlet weak var genderLabel: UILabel! | ||
38 | - var boyName:String="" | ||
39 | - var gender:String = "" | ||
40 | - var school:School! | ||
41 | - var selecttype:SelectType = .gender | ||
42 | - var genderArr:[String] = ["男","女"] | ||
43 | - var gradeArr:[GradeAndClasses] = [] | ||
44 | - var classesArr:[GradeAndClasses]=[] | ||
45 | - var selectGrade:GradeAndClasses! | ||
46 | - var selectClass:GradeAndClasses! | ||
47 | - var account = AccountManager.shared | ||
48 | - override func viewDidLoad() { | ||
49 | - super.viewDidLoad() | ||
50 | - stepUI() | ||
51 | - if selectGrade == nil && selectClass == nil{ | ||
52 | - getGradeOrClassData(type: 1) | ||
53 | - } | ||
54 | - setLabelValue() | ||
55 | - if from == .reserved || from == .unReserved{ | ||
56 | - getData() | ||
57 | - } | ||
58 | - // Do any additional setup after loading the view. | ||
59 | - } | ||
60 | - | ||
61 | - func getData(){ | ||
62 | - HTTPServer.shared.getParentInfo(["mobile":account.phone() as AnyObject,"school_id":school.schoolId as AnyObject]) { (str, error) in | ||
63 | - let json=JSON.fromString(str) | ||
64 | - if let ret=json{ | ||
65 | - let er=ret["error"].string | ||
66 | - if let errorStr=er{ | ||
67 | - appDelegate.window!.makeToast(errorStr) | ||
68 | - }else{ | ||
69 | - self.account.rawUserInfo = json | ||
70 | - self.setValueForLabel() | ||
71 | - } | ||
72 | - }else{ | ||
73 | - | ||
74 | - } | ||
75 | - } | ||
76 | - } | ||
77 | - | ||
78 | - func setValueForLabel(){ | ||
79 | - if account.studentClass().count == 0{ | ||
80 | - appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") | ||
81 | - return | ||
82 | - } | ||
83 | - let student = account.studentClass()[0] | ||
84 | - nameTextFiled.text = student["studentName"].stringValue | ||
85 | - classLabel.text = student["className"].stringValue | ||
86 | - gradeLabel.text = student["gradename"].stringValue | ||
87 | - genderLabel.text = student["sex"].intValue == 1 ? "男" : "女" | ||
88 | - } | ||
89 | - | ||
90 | - func stepUI(){ | ||
91 | - setViewLayer(view: classLabel) | ||
92 | - setViewLayer(view: gradeLabel) | ||
93 | - setViewLayer(view: genderLabel) | ||
94 | - setViewRadius(view: confirmBtn) | ||
95 | - if from == .selfVC{ | ||
96 | - phoneNumberLabel.isHidden = false | ||
97 | - phoneNumberLabel.text = account.phone() | ||
98 | - firstLineLabel.isHidden = false | ||
99 | - } | ||
100 | - if from != .select{ | ||
101 | - selectImageHeight.constant = 0 | ||
102 | - nameTextFiled.isUserInteractionEnabled = false | ||
103 | - } | ||
104 | - } | ||
105 | - | ||
106 | - @IBAction func cancleSelectTableView(_ sender: UIControl) { | ||
107 | - selectTableView.isHidden = true | ||
108 | - } | ||
109 | - func getGradeOrClassData(type:Int,gradeid:Int=0){//1,年级,2班级 | ||
110 | - HTTPServer.shared.getClassOrGrade(["state":type as AnyObject,"schoolid":school.schoolId as AnyObject,"gradeid":gradeid as AnyObject]) { (str, error) in | ||
111 | - let json=JSON.fromString(str) | ||
112 | - if let ret=json{ | ||
113 | - let er=ret["error"].string | ||
114 | - if let errorStr=er{ | ||
115 | - appDelegate.window!.makeToast(errorStr) | ||
116 | - }else{ | ||
117 | - for item in ret.contentData().arrayValue{ | ||
118 | - if type == 1{ | ||
119 | - self.gradeArr.append(GradeAndClasses(j: item)) | ||
120 | - }else{ | ||
121 | - self.classesArr.append(GradeAndClasses(j: item)) | ||
122 | - } | ||
123 | - } | ||
124 | - } | ||
125 | - }else{ | ||
126 | - | ||
127 | - } | ||
128 | - } | ||
129 | - } | ||
130 | - | ||
131 | - func setLabelValue(){ | ||
132 | - nameTextFiled.text = boyName | ||
133 | - classLabel.text = selectClass != nil ? selectClass.className : "" | ||
134 | - gradeLabel.text = selectGrade != nil ? selectGrade.gradeName : "" | ||
135 | - genderLabel.text = gender | ||
136 | - } | ||
137 | - | ||
138 | - override func didReceiveMemoryWarning() { | ||
139 | - super.didReceiveMemoryWarning() | ||
140 | - // Dispose of any resources that can be recreated. | ||
141 | - } | ||
142 | - | ||
143 | - //绑定孩子信息 | ||
144 | - func bindlingChildren(){ | ||
145 | - var dic:[String:AnyObject] = [:] | ||
146 | - switch from { | ||
147 | - case .selfVC: | ||
148 | - dic = ["parentId": account.parentId() as AnyObject, | ||
149 | - "cooperateFlag": "false" as AnyObject, | ||
150 | - "schoolId": school.schoolId as AnyObject, | ||
151 | - "classId": selectClass.classId as AnyObject, | ||
152 | - "studentName": boyName as AnyObject, | ||
153 | - "sex": (gender == "男" ? 1 : 2) as AnyObject] | ||
154 | - case .reserved: | ||
155 | - dic = ["cooperateFlag": "true" as AnyObject, | ||
156 | - "mobileFlag": "true" as AnyObject, | ||
157 | - "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] | ||
158 | - default: | ||
159 | - dic = ["cooperateFlag": "true" as AnyObject, | ||
160 | - "classId": account.studentClass()[0]["classId"].intValue as AnyObject, | ||
161 | - "mobileFlag": "false" as AnyObject, | ||
162 | - "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] | ||
163 | - } | ||
164 | - dic.updateValue(account.parentId() as AnyObject, forKey: "parentId") | ||
165 | - HTTPServer.shared.bindlingChildren(parameters: dic) { (str, error) in | ||
166 | - if JSON.fromString(str)!["status"] == 1 && error == nil{ | ||
167 | - appDelegate.window!.makeToast("绑定成功") | ||
168 | - let vc = BindlingSuccessViewController() | ||
169 | - self.navigationController?.pushViewController(vc, animated: true) | ||
170 | - }else{ | ||
171 | - appDelegate.window!.makeToast("绑定失败") | ||
172 | - | ||
173 | - } | ||
174 | - } | ||
175 | - } | ||
176 | - | ||
177 | - //确定按钮 | ||
178 | - @IBAction func confirmBtnClcik(_ sender: UIButton) { | ||
179 | - if (from == .reserved || from == .unReserved) && account.studentClass().count == 0{ | ||
180 | - appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") | ||
181 | - return | ||
182 | - } | ||
183 | - if from == .select && (selectClass == nil || boyName == "" || gender == ""){//班级选择完成则年级肯定已经完成 | ||
184 | - appDelegate.window!.makeToast("请先填写姓名并选择班级,年级,性别") | ||
185 | - return | ||
186 | - } | ||
187 | - //确认信息的确认按钮 | ||
188 | - if from != .select{ | ||
189 | - bindlingChildren() | ||
190 | - return | ||
191 | - } | ||
192 | - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
193 | - vc.boyName = boyName | ||
194 | - vc.gender = gender | ||
195 | - vc.from = .selfVC | ||
196 | - vc.selectClass = selectClass | ||
197 | - vc.selectGrade = selectGrade | ||
198 | - self.navigationController?.pushViewController(vc, animated: true) | ||
199 | - } | ||
200 | - | ||
201 | - override func viewWillAppear(_ animated: Bool) { | ||
202 | - super.viewWillAppear(animated) | ||
203 | - switch from { | ||
204 | - case .select: | ||
205 | - self.navigationItem.title = "填写孩子信息" | ||
206 | - default: | ||
207 | - self.navigationItem.title = "信息核对" | ||
208 | - } | ||
209 | - } | ||
210 | - | ||
211 | - @IBAction func selectTapAction(_ sender: UITapGestureRecognizer) { | ||
212 | - boyName = nameTextFiled.text ?? "" | ||
213 | - if from != .select { | ||
214 | - return | ||
215 | - } | ||
216 | - getSelectTableViewRect(sender) | ||
217 | - selectTableView.isHidden = false | ||
218 | - switch sender.view!.tag { | ||
219 | - case 1000: | ||
220 | - selecttype = .gender | ||
221 | - selectTableView.frame.size.height = 88 | ||
222 | - case 1001: | ||
223 | - selecttype = .grade | ||
224 | - if gradeArr.count > 3{ | ||
225 | - selectTableView.frame.size.height = 132 | ||
226 | - }else{ | ||
227 | - selectTableView.frame.size.height = 44*CGFloat(gradeArr.count) | ||
228 | - } | ||
229 | - | ||
230 | - case 1002: | ||
231 | - if selectGrade == nil{ | ||
232 | - selectTableView.isHidden = true | ||
233 | - appDelegate.window!.makeToast("请先选择年级") | ||
234 | - return | ||
235 | - } | ||
236 | - selecttype = .classes | ||
237 | - if classesArr.count > 3{ | ||
238 | - selectTableView.frame.size.height = 132 | ||
239 | - }else{ | ||
240 | - selectTableView.frame.size.height = 44*CGFloat(classesArr.count) | ||
241 | - } | ||
242 | - | ||
243 | - default: | ||
244 | - break | ||
245 | - } | ||
246 | - selectTableView.reloadData() | ||
247 | - } | ||
248 | - | ||
249 | - func getSelectTableViewRect(_ sender: UITapGestureRecognizer){ | ||
250 | - let locaViewFrame = sender.view!.frame | ||
251 | - selectTableView.frame.origin = CGPoint(x: locaViewFrame.origin.x+sender.view!.superview!.frame.origin.x, y: locaViewFrame.maxY+sender.view!.superview!.frame.origin.y) | ||
252 | - | ||
253 | - } | ||
254 | - | ||
255 | - /* | ||
256 | - // MARK: - Navigation | ||
257 | - | ||
258 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
259 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
260 | - // Get the new view controller using segue.destinationViewController. | ||
261 | - // Pass the selected object to the new view controller. | ||
262 | - } | ||
263 | - */ | ||
264 | - | ||
265 | -} | ||
266 | - | ||
267 | -extension BindingViewController:UITableViewDelegate,UITableViewDataSource{ | ||
268 | - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
269 | - switch selecttype { | ||
270 | - case .gender: | ||
271 | - return genderArr.count | ||
272 | - case .grade: | ||
273 | - return gradeArr.count | ||
274 | - default: | ||
275 | - return classesArr.count | ||
276 | - } | ||
277 | - } | ||
278 | - | ||
279 | - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
280 | - switch selecttype { | ||
281 | - case .gender: | ||
282 | - tableView.isHidden = true | ||
283 | - gender = genderArr[indexPath.row] | ||
284 | - case .grade: | ||
285 | - tableView.isHidden = true | ||
286 | - let items = gradeArr[indexPath.row] | ||
287 | - for item in gradeArr{ | ||
288 | - item.isSelect = false | ||
289 | - } | ||
290 | - items.isSelect = true | ||
291 | - selectGrade = items | ||
292 | - getGradeOrClassData(type: 2, gradeid: items.gradeid) | ||
293 | - default: | ||
294 | - let items = classesArr[indexPath.row] | ||
295 | - | ||
296 | - tableView.isHidden = true | ||
297 | - for item in classesArr{ | ||
298 | - item.isSelect = false | ||
299 | - } | ||
300 | - items.isSelect = true | ||
301 | - selectClass = items | ||
302 | - } | ||
303 | - setLabelValue() | ||
304 | - } | ||
305 | - | ||
306 | - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
307 | - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) | ||
308 | - switch selecttype { | ||
309 | - case .gender: | ||
310 | - cell.textLabel?.text = genderArr[indexPath.row] | ||
311 | - case .grade: | ||
312 | - cell.textLabel?.text = gradeArr[indexPath.row].gradeName | ||
313 | - default: | ||
314 | - cell.textLabel?.text = classesArr[indexPath.row].className | ||
315 | - } | ||
316 | - return cell | ||
317 | - } | ||
318 | - | ||
319 | - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
320 | - return 44 | ||
321 | - } | ||
322 | -} | ||
323 | - | ||
324 | -extension BindingViewController:UITextFieldDelegate{ | ||
325 | - func textFieldShouldReturn(_ textField: UITextField) -> Bool { | ||
326 | - boyName = textField.text! | ||
327 | - textField.resignFirstResponder() | ||
328 | - return true | ||
329 | - } | ||
330 | -} | ||
331 | - | ||
332 | -class GradeAndClasses: NSObject { | ||
333 | - var gradeid:Int=0 | ||
334 | - var gradeName:String = "" | ||
335 | - var classId:Int=0 | ||
336 | - var className:String = "" | ||
337 | - var isSelect:Bool = false | ||
338 | - init(j:JSON){ | ||
339 | - gradeid = j["gradeId"].intValue | ||
340 | - gradeName = j["gradeName"].stringValue | ||
341 | - classId = j["classId"].intValue | ||
342 | - className = j["className"].stringValue | ||
343 | - } | ||
344 | -} |
ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindlingSuccessViewController.swift
@@ -1,133 +0,0 @@ | @@ -1,133 +0,0 @@ | ||
1 | -// | ||
2 | -// BindlingSuccessViewController.swift | ||
3 | -// ParentAssistant | ||
4 | -// | ||
5 | -// Created by 左丞 on 2018/3/16. | ||
6 | -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | -// | ||
8 | - | ||
9 | -import UIKit | ||
10 | - | ||
11 | -class BindlingSuccessViewController: UIViewController ,UIWebViewDelegate,UIScrollViewDelegate{ | ||
12 | - var webView:UIWebView! | ||
13 | - var header:UIView! | ||
14 | - var webBrowserView:UIView! | ||
15 | - var urlStr:String="http://60.190.202.57:8101/RecommendOrder.aspx?userid=" | ||
16 | - var bindlingType:Int = 1 | ||
17 | - override func viewDidLoad() { | ||
18 | - super.viewDidLoad() | ||
19 | - self.view.backgroundColor = UIColor.white | ||
20 | - // Do any additional setup after loading the view. | ||
21 | - webView = UIWebView() | ||
22 | - webView.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: getScreenHeight()) | ||
23 | - webView.delegate = self; | ||
24 | - webView.backgroundColor = UIColor.clear | ||
25 | - self.view.addSubview(webView) | ||
26 | - | ||
27 | - let request = URLRequest(url: URL(string: urlStr)!) | ||
28 | - webView.loadRequest(request) | ||
29 | - | ||
30 | - if bindlingType == 0{ | ||
31 | - header = UIView() | ||
32 | - header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 80) | ||
33 | - header.backgroundColor = UIColor.clear | ||
34 | - let backView = UIView() | ||
35 | - let image = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) | ||
36 | - image.image = #imageLiteral(resourceName: "my_icon_bindlingSuccess") | ||
37 | - backView.addSubview(image) | ||
38 | - let label = UILabel(frame: CGRect(x: 50, y: 10, width: header.frame.width - 20, height: 20)) | ||
39 | - label.text = "绑定成功" | ||
40 | - label.numberOfLines = 0 | ||
41 | - label.textColor = UIColor.darkGray | ||
42 | - label.font = UIFont.systemFont(ofSize: 15) | ||
43 | - label.sizeToFit() | ||
44 | - backView.addSubview(label) | ||
45 | - backView.frame.size = CGSize(width: label.frame.maxX, height: 40) | ||
46 | - backView.center.y = header.center.y | ||
47 | - backView.center.x = header.center.x-10 | ||
48 | - header.addSubview(label) | ||
49 | - }else{ | ||
50 | - header = UIView() | ||
51 | - header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 150) | ||
52 | - header.backgroundColor = UIColor.clear | ||
53 | - let label = UILabel(frame: CGRect(x: 10, y: 10, width: header.frame.width - 20, height: 100)) | ||
54 | - label.text = "生成孩子\"汇作业\"账号为:\(urlStr),\n初始密码为:\(urlStr)(与账号相同),\n孩子可以下载\"汇作业\"app进行使用,\n" | ||
55 | - label.numberOfLines = 0 | ||
56 | - label.textColor = UIColor.darkGray | ||
57 | - label.font = UIFont.systemFont(ofSize: 15) | ||
58 | - label.sizeToFit() | ||
59 | - header.addSubview(label) | ||
60 | - | ||
61 | - let backView = UIView() | ||
62 | - let label2 = UILabel(frame: CGRect(x: 0, y: 5, width: header.frame.width - 20, height: 20)) | ||
63 | - label2.text = "下载地址:" | ||
64 | - label2.textColor = UIColor.darkGray | ||
65 | - label2.font = UIFont.systemFont(ofSize: 15) | ||
66 | - label2.sizeToFit() | ||
67 | - backView.addSubview(label2) | ||
68 | - let btn = UIButton(frame: CGRect(x: label2.frame.maxX, y: 0, width: 70, height: 30)) | ||
69 | - | ||
70 | - let str = NSMutableAttributedString(string: "汇作业") | ||
71 | - let strRange = NSRange(location: 0, length: str.length) | ||
72 | - str.addAttributes([NSAttributedStringKey.underlineStyle: NSNumber(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), | ||
73 | - NSAttributedStringKey.foregroundColor: Theme.topBarColor(), | ||
74 | - NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15)], | ||
75 | - range: strRange) | ||
76 | - btn.setAttributedTitle(str, for: .normal) | ||
77 | - btn.addTarget(self, action: #selector(BindlingSuccessViewController.pushToAppStore), for: .touchUpInside) | ||
78 | - backView.addSubview(btn) | ||
79 | - backView.frame.size = CGSize(width: btn.frame.width+label2.frame.width+10, height: 30) | ||
80 | - backView.center = CGPoint(x: header.center.x-10, y: label.frame.maxY+10) | ||
81 | - header.frame.size.height = backView.frame.maxY + 10 | ||
82 | - header.addSubview(backView) | ||
83 | - } | ||
84 | - | ||
85 | - webBrowserView = webView.scrollView.subviews[0] | ||
86 | - var rect = self.webBrowserView.frame | ||
87 | - rect.origin.y = header.frame.maxY+10 | ||
88 | - webBrowserView.frame = rect | ||
89 | - | ||
90 | - //添加 | ||
91 | - webView.scrollView.addSubview(header) | ||
92 | - | ||
93 | - webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) | ||
94 | - | ||
95 | - // Do any additional setup after loading the view. | ||
96 | - } | ||
97 | - | ||
98 | - @objc func pushToAppStore(){ | ||
99 | - | ||
100 | - } | ||
101 | - | ||
102 | - override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { | ||
103 | - webView.scrollView.removeObserver(self, forKeyPath: "contentSize") | ||
104 | - _ = self.view.viewWithTag(100) | ||
105 | - let contentSize = webView.scrollView.contentSize | ||
106 | - let vi = UIView() | ||
107 | - vi.backgroundColor = UIColor.purple | ||
108 | - vi.tag = 100 | ||
109 | - vi.frame = CGRect(x: 0, y: contentSize.height, width: getScreenWidth()-20, height: 150) | ||
110 | - webView.scrollView.addSubview(vi) | ||
111 | - webView.scrollView.contentSize = CGSize(width: contentSize.width, height: contentSize.height+150) | ||
112 | - | ||
113 | - webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) | ||
114 | - | ||
115 | - } | ||
116 | - | ||
117 | - override func didReceiveMemoryWarning() { | ||
118 | - super.didReceiveMemoryWarning() | ||
119 | - // Dispose of any resources that can be recreated. | ||
120 | - } | ||
121 | - | ||
122 | - | ||
123 | - /* | ||
124 | - // MARK: - Navigation | ||
125 | - | ||
126 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
127 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
128 | - // Get the new view controller using segue.destinationViewController. | ||
129 | - // Pass the selected object to the new view controller. | ||
130 | - } | ||
131 | - */ | ||
132 | - | ||
133 | -} |
ParentAssistant/ParentAssistant/Classes/controllers/userCenter/InvitationCodeVerificationViewController.swift
@@ -1,58 +0,0 @@ | @@ -1,58 +0,0 @@ | ||
1 | -// | ||
2 | -// InvitationCodeVerificationViewController.swift | ||
3 | -// ParentAssistant | ||
4 | -// | ||
5 | -// Created by 左丞 on 2018/3/13. | ||
6 | -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. | ||
7 | -// | ||
8 | - | ||
9 | -import UIKit | ||
10 | - | ||
11 | -class InvitationCodeVerificationViewController: UIViewController ,UITextFieldDelegate{ | ||
12 | - | ||
13 | - @IBOutlet weak var instructions: UILabel! | ||
14 | - @IBOutlet weak var nextBtn: UIButton! | ||
15 | - @IBOutlet weak var inputInvitationCode: UITextField! | ||
16 | - var school:School! | ||
17 | - override func viewDidLoad() { | ||
18 | - super.viewDidLoad() | ||
19 | - instructions.text = "注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证)\n\n如不知道邀请码请拨打电话: 400-826-2468进行查询" | ||
20 | - nextBtn.layer.cornerRadius = 10 | ||
21 | - nextBtn.layer.masksToBounds = true | ||
22 | - | ||
23 | - // Do any additional setup after loading the view. | ||
24 | - } | ||
25 | - | ||
26 | - override func didReceiveMemoryWarning() { | ||
27 | - super.didReceiveMemoryWarning() | ||
28 | - // Dispose of any resources that can be recreated. | ||
29 | - } | ||
30 | - | ||
31 | - @IBAction func nextBtnClick(_ sender: UIButton) { | ||
32 | - if inputInvitationCode.text != ""{ | ||
33 | - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController | ||
34 | - vc.from = .reserved | ||
35 | - vc.school = school! | ||
36 | - self.navigationController?.pushViewController(vc, animated: true) | ||
37 | - }else{ | ||
38 | - appDelegate.window!.makeToast("请填写邀请码") | ||
39 | - return | ||
40 | - } | ||
41 | - } | ||
42 | - | ||
43 | - func textFieldShouldReturn(_ textField: UITextField) -> Bool { | ||
44 | - textField.resignFirstResponder() | ||
45 | - return true | ||
46 | - } | ||
47 | - | ||
48 | - /* | ||
49 | - // MARK: - Navigation | ||
50 | - | ||
51 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | ||
52 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | ||
53 | - // Get the new view controller using segue.destinationViewController. | ||
54 | - // Pass the selected object to the new view controller. | ||
55 | - } | ||
56 | - */ | ||
57 | - | ||
58 | -} |
ParentAssistant/ParentAssistant/Classes/controllers/userCenter/UserCenter.storyboard
@@ -1,606 +0,0 @@ | @@ -1,606 +0,0 @@ | ||
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
3 | - <device id="retina4_7" orientation="portrait"> | ||
4 | - <adaptation id="fullscreen"/> | ||
5 | - </device> | ||
6 | - <dependencies> | ||
7 | - <deployment identifier="iOS"/> | ||
8 | - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/> | ||
9 | - <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> | ||
10 | - <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
11 | - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
12 | - </dependencies> | ||
13 | - <scenes> | ||
14 | - <!--Binding View Controller--> | ||
15 | - <scene sceneID="MIJ-WH-73A"> | ||
16 | - <objects> | ||
17 | - <viewController storyboardIdentifier="BindingViewControllerVC" id="SC7-Z5-TUk" customClass="BindingViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
18 | - <view key="view" contentMode="scaleToFill" id="wHn-CF-kHg"> | ||
19 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
20 | - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
21 | - <subviews> | ||
22 | - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P0w-Y3-Nux"> | ||
23 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
24 | - <subviews> | ||
25 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XNG-cS-DCX" customClass="UIControl"> | ||
26 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
27 | - <subviews> | ||
28 | - <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="绑定手机号码为" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="REL-rO-sBE"> | ||
29 | - <rect key="frame" x="126.5" y="20" width="121.5" height="21"/> | ||
30 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
31 | - <nil key="textColor"/> | ||
32 | - <nil key="highlightedColor"/> | ||
33 | - </label> | ||
34 | - <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1j1-yS-AS0"> | ||
35 | - <rect key="frame" x="187.5" y="61" width="0.0" height="0.0"/> | ||
36 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
37 | - <color key="textColor" red="0.95294117649999999" green="0.044139709020000001" blue="0.0" alpha="0.90402160229999995" colorSpace="calibratedRGB"/> | ||
38 | - <nil key="highlightedColor"/> | ||
39 | - </label> | ||
40 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lry-ZD-jrQ"> | ||
41 | - <rect key="frame" x="67.5" y="81" width="240" height="40"/> | ||
42 | - <subviews> | ||
43 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="孩子姓名:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SzI-3b-VyZ"> | ||
44 | - <rect key="frame" x="8" y="9.5" width="75" height="21"/> | ||
45 | - <constraints> | ||
46 | - <constraint firstAttribute="width" constant="75" id="1Kz-c2-cWk"/> | ||
47 | - </constraints> | ||
48 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
49 | - <nil key="textColor"/> | ||
50 | - <nil key="highlightedColor"/> | ||
51 | - </label> | ||
52 | - <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="BcE-Vi-QYk"> | ||
53 | - <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
54 | - <nil key="textColor"/> | ||
55 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
56 | - <textInputTraits key="textInputTraits"/> | ||
57 | - <connections> | ||
58 | - <outlet property="delegate" destination="SC7-Z5-TUk" id="OOq-YY-QL7"/> | ||
59 | - </connections> | ||
60 | - </textField> | ||
61 | - </subviews> | ||
62 | - <constraints> | ||
63 | - <constraint firstItem="BcE-Vi-QYk" firstAttribute="centerY" secondItem="Lry-ZD-jrQ" secondAttribute="centerY" id="UQx-st-B52"/> | ||
64 | - <constraint firstItem="BcE-Vi-QYk" firstAttribute="leading" secondItem="SzI-3b-VyZ" secondAttribute="trailing" constant="8" id="giU-FF-BVf"/> | ||
65 | - <constraint firstAttribute="width" constant="240" id="nln-YE-aUo"/> | ||
66 | - <constraint firstItem="SzI-3b-VyZ" firstAttribute="centerY" secondItem="Lry-ZD-jrQ" secondAttribute="centerY" id="t0S-VJ-l1C"/> | ||
67 | - <constraint firstAttribute="trailing" secondItem="BcE-Vi-QYk" secondAttribute="trailing" constant="8" id="yQh-ty-91f"/> | ||
68 | - <constraint firstItem="SzI-3b-VyZ" firstAttribute="leading" secondItem="Lry-ZD-jrQ" secondAttribute="leading" constant="8" id="z2C-7R-Ub1"/> | ||
69 | - </constraints> | ||
70 | - </view> | ||
71 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kxt-bL-oiI"> | ||
72 | - <rect key="frame" x="67.5" y="129" width="240" height="40"/> | ||
73 | - <subviews> | ||
74 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="性 别:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gRs-dx-ci7"> | ||
75 | - <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
76 | - <constraints> | ||
77 | - <constraint firstAttribute="width" constant="75" id="eVY-WV-LHm"/> | ||
78 | - </constraints> | ||
79 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
80 | - <nil key="textColor"/> | ||
81 | - <nil key="highlightedColor"/> | ||
82 | - </label> | ||
83 | - <view tag="1000" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PFs-Tj-G2K"> | ||
84 | - <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
85 | - <subviews> | ||
86 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8EC-X6-bwJ"> | ||
87 | - <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
88 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
89 | - <nil key="textColor"/> | ||
90 | - <nil key="highlightedColor"/> | ||
91 | - </label> | ||
92 | - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="t7C-GZ-zMI"> | ||
93 | - <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
94 | - <constraints> | ||
95 | - <constraint firstAttribute="width" secondItem="t7C-GZ-zMI" secondAttribute="height" multiplier="16:9" id="OER-9Z-gv9"/> | ||
96 | - <constraint firstAttribute="width" constant="20" id="UdM-aj-TjH"/> | ||
97 | - </constraints> | ||
98 | - </imageView> | ||
99 | - </subviews> | ||
100 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
101 | - <gestureRecognizers/> | ||
102 | - <constraints> | ||
103 | - <constraint firstItem="8EC-X6-bwJ" firstAttribute="leading" secondItem="PFs-Tj-G2K" secondAttribute="leading" id="5GC-Eb-4l2"/> | ||
104 | - <constraint firstItem="t7C-GZ-zMI" firstAttribute="leading" secondItem="8EC-X6-bwJ" secondAttribute="trailing" id="EZX-dZ-q37"/> | ||
105 | - <constraint firstAttribute="trailing" secondItem="t7C-GZ-zMI" secondAttribute="trailing" id="GFx-iV-h2I"/> | ||
106 | - <constraint firstItem="t7C-GZ-zMI" firstAttribute="centerY" secondItem="PFs-Tj-G2K" secondAttribute="centerY" id="Jft-CZ-Ozm"/> | ||
107 | - <constraint firstAttribute="height" constant="30" id="Xqc-eU-7Pr"/> | ||
108 | - <constraint firstItem="8EC-X6-bwJ" firstAttribute="top" secondItem="PFs-Tj-G2K" secondAttribute="top" id="qyh-NB-CVP"/> | ||
109 | - <constraint firstAttribute="bottom" secondItem="8EC-X6-bwJ" secondAttribute="bottom" id="wv5-4S-ql7"/> | ||
110 | - </constraints> | ||
111 | - <connections> | ||
112 | - <outletCollection property="gestureRecognizers" destination="LEy-66-xfv" appends="YES" id="cXM-sF-jrH"/> | ||
113 | - </connections> | ||
114 | - </view> | ||
115 | - </subviews> | ||
116 | - <constraints> | ||
117 | - <constraint firstItem="gRs-dx-ci7" firstAttribute="leading" secondItem="kxt-bL-oiI" secondAttribute="leading" constant="8" id="1U3-kg-RuV"/> | ||
118 | - <constraint firstAttribute="trailing" secondItem="PFs-Tj-G2K" secondAttribute="trailing" constant="8" id="NSH-fs-D3q"/> | ||
119 | - <constraint firstItem="PFs-Tj-G2K" firstAttribute="centerY" secondItem="kxt-bL-oiI" secondAttribute="centerY" id="Sgo-zl-RVe"/> | ||
120 | - <constraint firstItem="PFs-Tj-G2K" firstAttribute="leading" secondItem="gRs-dx-ci7" secondAttribute="trailing" constant="8" id="jlC-sf-cUB"/> | ||
121 | - <constraint firstItem="gRs-dx-ci7" firstAttribute="centerY" secondItem="kxt-bL-oiI" secondAttribute="centerY" id="y97-EE-VAy"/> | ||
122 | - </constraints> | ||
123 | - </view> | ||
124 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O93-Li-jET"> | ||
125 | - <rect key="frame" x="67.5" y="177" width="240" height="40"/> | ||
126 | - <subviews> | ||
127 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="年 级:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yBZ-0b-pQ9"> | ||
128 | - <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
129 | - <constraints> | ||
130 | - <constraint firstAttribute="width" constant="75" id="dqs-ha-x8B"/> | ||
131 | - </constraints> | ||
132 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
133 | - <nil key="textColor"/> | ||
134 | - <nil key="highlightedColor"/> | ||
135 | - </label> | ||
136 | - <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GuO-ah-aM3"> | ||
137 | - <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
138 | - <subviews> | ||
139 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k8w-na-ShO"> | ||
140 | - <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
141 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
142 | - <nil key="textColor"/> | ||
143 | - <nil key="highlightedColor"/> | ||
144 | - </label> | ||
145 | - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="u8y-wv-95T"> | ||
146 | - <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
147 | - <constraints> | ||
148 | - <constraint firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="height" multiplier="16:9" id="PpX-an-Mcx"/> | ||
149 | - </constraints> | ||
150 | - </imageView> | ||
151 | - </subviews> | ||
152 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
153 | - <gestureRecognizers/> | ||
154 | - <constraints> | ||
155 | - <constraint firstItem="k8w-na-ShO" firstAttribute="leading" secondItem="GuO-ah-aM3" secondAttribute="leading" id="1YM-Gx-c1v"/> | ||
156 | - <constraint firstItem="u8y-wv-95T" firstAttribute="leading" secondItem="k8w-na-ShO" secondAttribute="trailing" id="DZ0-WJ-MkY"/> | ||
157 | - <constraint firstAttribute="bottom" secondItem="k8w-na-ShO" secondAttribute="bottom" id="J2d-vN-CP1"/> | ||
158 | - <constraint firstItem="k8w-na-ShO" firstAttribute="top" secondItem="GuO-ah-aM3" secondAttribute="top" id="PWZ-ai-sko"/> | ||
159 | - <constraint firstItem="u8y-wv-95T" firstAttribute="centerY" secondItem="GuO-ah-aM3" secondAttribute="centerY" id="f4o-vC-bln"/> | ||
160 | - <constraint firstAttribute="trailing" secondItem="u8y-wv-95T" secondAttribute="trailing" id="mU3-LE-4dM"/> | ||
161 | - <constraint firstAttribute="height" constant="30" id="rIk-SK-yBP"/> | ||
162 | - </constraints> | ||
163 | - <connections> | ||
164 | - <outletCollection property="gestureRecognizers" destination="Kts-0O-pak" appends="YES" id="hUj-y5-jMs"/> | ||
165 | - </connections> | ||
166 | - </view> | ||
167 | - </subviews> | ||
168 | - <constraints> | ||
169 | - <constraint firstAttribute="trailing" secondItem="GuO-ah-aM3" secondAttribute="trailing" constant="8" id="3ye-AU-Wjq"/> | ||
170 | - <constraint firstItem="GuO-ah-aM3" firstAttribute="centerY" secondItem="O93-Li-jET" secondAttribute="centerY" id="S7j-Y1-iv2"/> | ||
171 | - <constraint firstItem="yBZ-0b-pQ9" firstAttribute="leading" secondItem="O93-Li-jET" secondAttribute="leading" constant="8" id="b6Z-BO-HDk"/> | ||
172 | - <constraint firstItem="yBZ-0b-pQ9" firstAttribute="centerY" secondItem="O93-Li-jET" secondAttribute="centerY" id="qdX-Ir-kHe"/> | ||
173 | - <constraint firstItem="GuO-ah-aM3" firstAttribute="leading" secondItem="yBZ-0b-pQ9" secondAttribute="trailing" constant="8" id="vGm-oD-Gs9"/> | ||
174 | - </constraints> | ||
175 | - </view> | ||
176 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hR4-GJ-ZLd"> | ||
177 | - <rect key="frame" x="67.5" y="225" width="240" height="40"/> | ||
178 | - <subviews> | ||
179 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="班 级:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qFh-7U-p8J"> | ||
180 | - <rect key="frame" x="8" y="10" width="75" height="21"/> | ||
181 | - <constraints> | ||
182 | - <constraint firstAttribute="width" constant="75" id="4gg-6q-S4K"/> | ||
183 | - </constraints> | ||
184 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
185 | - <nil key="textColor"/> | ||
186 | - <nil key="highlightedColor"/> | ||
187 | - </label> | ||
188 | - <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FMa-hb-gaq"> | ||
189 | - <rect key="frame" x="91" y="5" width="141" height="30"/> | ||
190 | - <subviews> | ||
191 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Ff-lb-IAz"> | ||
192 | - <rect key="frame" x="0.0" y="0.0" width="121" height="30"/> | ||
193 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
194 | - <nil key="textColor"/> | ||
195 | - <nil key="highlightedColor"/> | ||
196 | - </label> | ||
197 | - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="sBB-lz-j4M"> | ||
198 | - <rect key="frame" x="121" y="9.5" width="20" height="11"/> | ||
199 | - <constraints> | ||
200 | - <constraint firstAttribute="width" secondItem="sBB-lz-j4M" secondAttribute="height" multiplier="16:9" id="RK6-la-GUy"/> | ||
201 | - </constraints> | ||
202 | - </imageView> | ||
203 | - </subviews> | ||
204 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
205 | - <gestureRecognizers/> | ||
206 | - <constraints> | ||
207 | - <constraint firstItem="sBB-lz-j4M" firstAttribute="centerY" secondItem="FMa-hb-gaq" secondAttribute="centerY" id="Nlx-aL-9Cp"/> | ||
208 | - <constraint firstAttribute="bottom" secondItem="3Ff-lb-IAz" secondAttribute="bottom" id="PPf-rg-VMj"/> | ||
209 | - <constraint firstAttribute="trailing" secondItem="sBB-lz-j4M" secondAttribute="trailing" id="c92-Bb-fPa"/> | ||
210 | - <constraint firstAttribute="height" constant="30" id="cD7-29-sC3"/> | ||
211 | - <constraint firstItem="3Ff-lb-IAz" firstAttribute="leading" secondItem="FMa-hb-gaq" secondAttribute="leading" id="f9p-Mv-1bg"/> | ||
212 | - <constraint firstItem="3Ff-lb-IAz" firstAttribute="top" secondItem="FMa-hb-gaq" secondAttribute="top" id="hgk-HZ-k3t"/> | ||
213 | - <constraint firstItem="sBB-lz-j4M" firstAttribute="leading" secondItem="3Ff-lb-IAz" secondAttribute="trailing" id="tWR-Xb-CpO"/> | ||
214 | - </constraints> | ||
215 | - <connections> | ||
216 | - <outletCollection property="gestureRecognizers" destination="3FV-1x-Qsg" appends="YES" id="KTd-T3-ptA"/> | ||
217 | - </connections> | ||
218 | - </view> | ||
219 | - </subviews> | ||
220 | - <constraints> | ||
221 | - <constraint firstAttribute="height" constant="40" id="6Mp-oZ-kFS"/> | ||
222 | - <constraint firstItem="qFh-7U-p8J" firstAttribute="centerY" secondItem="hR4-GJ-ZLd" secondAttribute="centerY" id="6qw-zS-lTj"/> | ||
223 | - <constraint firstItem="qFh-7U-p8J" firstAttribute="leading" secondItem="hR4-GJ-ZLd" secondAttribute="leading" constant="8" id="A16-Da-Nml"/> | ||
224 | - <constraint firstItem="FMa-hb-gaq" firstAttribute="centerY" secondItem="hR4-GJ-ZLd" secondAttribute="centerY" id="ILl-xZ-ROc"/> | ||
225 | - <constraint firstAttribute="trailing" secondItem="FMa-hb-gaq" secondAttribute="trailing" constant="8" id="TC0-Yy-FbX"/> | ||
226 | - <constraint firstItem="FMa-hb-gaq" firstAttribute="leading" secondItem="qFh-7U-p8J" secondAttribute="trailing" constant="8" id="ePc-S7-FyD"/> | ||
227 | - </constraints> | ||
228 | - </view> | ||
229 | - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FqV-SD-Mvm"> | ||
230 | - <rect key="frame" x="112.5" y="285" width="150" height="33"/> | ||
231 | - <color key="backgroundColor" red="0.27503338459999999" green="0.50970917940000005" blue="0.90092128520000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
232 | - <constraints> | ||
233 | - <constraint firstAttribute="width" constant="150" id="UyA-XG-HPW"/> | ||
234 | - </constraints> | ||
235 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
236 | - <state key="normal" title="确定"> | ||
237 | - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
238 | - </state> | ||
239 | - <connections> | ||
240 | - <action selector="confirmBtnClcik:" destination="SC7-Z5-TUk" eventType="touchUpInside" id="dYC-uT-Vwc"/> | ||
241 | - </connections> | ||
242 | - </button> | ||
243 | - <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="fmZ-BK-cei"> | ||
244 | - <rect key="frame" x="156" y="335" width="135" height="152"/> | ||
245 | - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
246 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
247 | - <prototypes> | ||
248 | - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="ScH-T2-JbL"> | ||
249 | - <rect key="frame" x="0.0" y="28" width="135" height="44"/> | ||
250 | - <autoresizingMask key="autoresizingMask"/> | ||
251 | - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="ScH-T2-JbL" id="Vdf-3J-cd1"> | ||
252 | - <rect key="frame" x="0.0" y="0.0" width="135" height="43.5"/> | ||
253 | - <autoresizingMask key="autoresizingMask"/> | ||
254 | - </tableViewCellContentView> | ||
255 | - </tableViewCell> | ||
256 | - </prototypes> | ||
257 | - <connections> | ||
258 | - <outlet property="dataSource" destination="SC7-Z5-TUk" id="Jiq-kB-gCm"/> | ||
259 | - <outlet property="delegate" destination="SC7-Z5-TUk" id="0AV-HO-e1k"/> | ||
260 | - </connections> | ||
261 | - </tableView> | ||
262 | - </subviews> | ||
263 | - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> | ||
264 | - <constraints> | ||
265 | - <constraint firstItem="REL-rO-sBE" firstAttribute="top" secondItem="XNG-cS-DCX" secondAttribute="top" constant="20" id="5ZV-2a-Qo0"/> | ||
266 | - <constraint firstItem="1j1-yS-AS0" firstAttribute="top" secondItem="REL-rO-sBE" secondAttribute="bottom" constant="20" id="5gv-QF-b7B"/> | ||
267 | - <constraint firstItem="O93-Li-jET" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="BJw-Fi-zqe"/> | ||
268 | - <constraint firstItem="Lry-ZD-jrQ" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="GdP-6p-9L5"/> | ||
269 | - <constraint firstItem="kxt-bL-oiI" firstAttribute="top" secondItem="Lry-ZD-jrQ" secondAttribute="bottom" constant="8" id="HxB-x6-iZq"/> | ||
270 | - <constraint firstItem="1j1-yS-AS0" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="Jd3-q2-0X8"/> | ||
271 | - <constraint firstItem="FqV-SD-Mvm" firstAttribute="top" secondItem="hR4-GJ-ZLd" secondAttribute="bottom" constant="20" id="M0T-AR-guZ"/> | ||
272 | - <constraint firstItem="O93-Li-jET" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="M5S-H4-w8q"/> | ||
273 | - <constraint firstItem="FqV-SD-Mvm" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="OFC-XX-Wzn"/> | ||
274 | - <constraint firstItem="hR4-GJ-ZLd" firstAttribute="top" secondItem="O93-Li-jET" secondAttribute="bottom" constant="8" id="Ou1-72-F83"/> | ||
275 | - <constraint firstItem="O93-Li-jET" firstAttribute="top" secondItem="kxt-bL-oiI" secondAttribute="bottom" constant="8" id="Sy6-4q-XeH"/> | ||
276 | - <constraint firstItem="hR4-GJ-ZLd" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="T4F-hh-BOa"/> | ||
277 | - <constraint firstItem="kxt-bL-oiI" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="WJy-dT-EXy"/> | ||
278 | - <constraint firstAttribute="height" constant="667" id="aXb-ZO-UyB"/> | ||
279 | - <constraint firstItem="t7C-GZ-zMI" firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="width" id="be8-xa-5G9"/> | ||
280 | - <constraint firstItem="sBB-lz-j4M" firstAttribute="width" secondItem="u8y-wv-95T" secondAttribute="width" id="eDv-01-DiQ"/> | ||
281 | - <constraint firstItem="Lry-ZD-jrQ" firstAttribute="top" secondItem="1j1-yS-AS0" secondAttribute="bottom" constant="20" id="geU-1c-IfY"/> | ||
282 | - <constraint firstItem="kxt-bL-oiI" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="jdh-cw-zpa"/> | ||
283 | - <constraint firstItem="kxt-bL-oiI" firstAttribute="width" secondItem="Lry-ZD-jrQ" secondAttribute="width" id="mGE-8p-MQY"/> | ||
284 | - <constraint firstItem="hR4-GJ-ZLd" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="rxP-pl-3Um"/> | ||
285 | - <constraint firstItem="O93-Li-jET" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="uyt-7c-LZX"/> | ||
286 | - <constraint firstItem="hR4-GJ-ZLd" firstAttribute="height" secondItem="Lry-ZD-jrQ" secondAttribute="height" id="wJT-yt-hLC"/> | ||
287 | - <constraint firstItem="REL-rO-sBE" firstAttribute="centerX" secondItem="XNG-cS-DCX" secondAttribute="centerX" id="xV9-gg-n1L"/> | ||
288 | - </constraints> | ||
289 | - <connections> | ||
290 | - <action selector="cancleSelectTableView:" destination="SC7-Z5-TUk" eventType="valueChanged" id="U7F-UF-iuZ"/> | ||
291 | - </connections> | ||
292 | - </view> | ||
293 | - </subviews> | ||
294 | - <constraints> | ||
295 | - <constraint firstAttribute="bottom" secondItem="XNG-cS-DCX" secondAttribute="bottom" id="GpA-U6-Grn"/> | ||
296 | - <constraint firstItem="XNG-cS-DCX" firstAttribute="top" secondItem="P0w-Y3-Nux" secondAttribute="top" id="LBb-SE-77O"/> | ||
297 | - <constraint firstItem="XNG-cS-DCX" firstAttribute="leading" secondItem="P0w-Y3-Nux" secondAttribute="leading" id="Mkw-GK-7L3"/> | ||
298 | - <constraint firstAttribute="trailing" secondItem="XNG-cS-DCX" secondAttribute="trailing" id="Tve-bM-QyB"/> | ||
299 | - <constraint firstItem="XNG-cS-DCX" firstAttribute="centerX" secondItem="P0w-Y3-Nux" secondAttribute="centerX" id="tYI-cc-gNF"/> | ||
300 | - </constraints> | ||
301 | - </scrollView> | ||
302 | - </subviews> | ||
303 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
304 | - <constraints> | ||
305 | - <constraint firstItem="P0w-Y3-Nux" firstAttribute="top" secondItem="wHn-CF-kHg" secondAttribute="top" id="2qF-RX-Ngk"/> | ||
306 | - <constraint firstItem="P0w-Y3-Nux" firstAttribute="leading" secondItem="prJ-Io-sHC" secondAttribute="leading" id="90x-M3-dT7"/> | ||
307 | - <constraint firstItem="P0w-Y3-Nux" firstAttribute="bottom" secondItem="prJ-Io-sHC" secondAttribute="bottom" id="WnC-bM-yOh"/> | ||
308 | - <constraint firstItem="P0w-Y3-Nux" firstAttribute="trailing" secondItem="prJ-Io-sHC" secondAttribute="trailing" id="sQx-XF-5At"/> | ||
309 | - </constraints> | ||
310 | - <viewLayoutGuide key="safeArea" id="prJ-Io-sHC"/> | ||
311 | - </view> | ||
312 | - <connections> | ||
313 | - <outlet property="classLabel" destination="3Ff-lb-IAz" id="3vZ-RG-Kl0"/> | ||
314 | - <outlet property="confirmBtn" destination="FqV-SD-Mvm" id="2ks-S7-aw2"/> | ||
315 | - <outlet property="firstLineLabel" destination="REL-rO-sBE" id="sHm-br-6ch"/> | ||
316 | - <outlet property="genderLabel" destination="8EC-X6-bwJ" id="mGD-Vp-XO4"/> | ||
317 | - <outlet property="gradeLabel" destination="k8w-na-ShO" id="0SC-ja-Ycq"/> | ||
318 | - <outlet property="nameTextFiled" destination="BcE-Vi-QYk" id="P6F-fb-c0Z"/> | ||
319 | - <outlet property="phoneNumberLabel" destination="1j1-yS-AS0" id="ro7-AV-8eQ"/> | ||
320 | - <outlet property="selectImageHeight" destination="UdM-aj-TjH" id="FDT-0C-lMv"/> | ||
321 | - <outlet property="selectTableView" destination="fmZ-BK-cei" id="WKi-76-ydS"/> | ||
322 | - </connections> | ||
323 | - </viewController> | ||
324 | - <placeholder placeholderIdentifier="IBFirstResponder" id="gtY-da-H8P" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
325 | - <tapGestureRecognizer id="LEy-66-xfv"> | ||
326 | - <connections> | ||
327 | - <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="Nbe-mO-VOd"/> | ||
328 | - </connections> | ||
329 | - </tapGestureRecognizer> | ||
330 | - <tapGestureRecognizer id="Kts-0O-pak"> | ||
331 | - <connections> | ||
332 | - <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="8Rk-RM-Grb"/> | ||
333 | - </connections> | ||
334 | - </tapGestureRecognizer> | ||
335 | - <tapGestureRecognizer id="3FV-1x-Qsg"> | ||
336 | - <connections> | ||
337 | - <action selector="selectTapAction:" destination="SC7-Z5-TUk" id="ETG-1g-7Jk"/> | ||
338 | - </connections> | ||
339 | - </tapGestureRecognizer> | ||
340 | - </objects> | ||
341 | - <point key="canvasLocation" x="77.599999999999994" y="118.29085457271366"/> | ||
342 | - </scene> | ||
343 | - <!--选择孩子学校--> | ||
344 | - <scene sceneID="jXC-xr-pan"> | ||
345 | - <objects> | ||
346 | - <viewController storyboardIdentifier="BaseCityChooseSchoolViewControllerVC" id="A0M-q7-IGT" customClass="BaseCityChooseSchoolViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
347 | - <view key="view" contentMode="scaleToFill" id="Onv-g3-veb"> | ||
348 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
349 | - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
350 | - <subviews> | ||
351 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fO6-Ah-i0n"> | ||
352 | - <rect key="frame" x="0.0" y="64" width="375" height="40"/> | ||
353 | - <subviews> | ||
354 | - <searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="l2p-Iw-hkv"> | ||
355 | - <rect key="frame" x="40" y="0.0" width="335" height="40"/> | ||
356 | - <textInputTraits key="textInputTraits"/> | ||
357 | - <scopeButtonTitles> | ||
358 | - <string>Title</string> | ||
359 | - <string>Title</string> | ||
360 | - </scopeButtonTitles> | ||
361 | - <connections> | ||
362 | - <outlet property="delegate" destination="A0M-q7-IGT" id="e7y-Ov-FN3"/> | ||
363 | - </connections> | ||
364 | - </searchBar> | ||
365 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DOI-gH-jce"> | ||
366 | - <rect key="frame" x="0.0" y="0.0" width="40" height="40"/> | ||
367 | - <subviews> | ||
368 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5U5-yq-C0i"> | ||
369 | - <rect key="frame" x="8" y="20.5" width="0.0" height="0.0"/> | ||
370 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
371 | - <nil key="textColor"/> | ||
372 | - <nil key="highlightedColor"/> | ||
373 | - </label> | ||
374 | - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_pushDown" translatesAutoresizingMaskIntoConstraints="NO" id="orB-P1-43H"> | ||
375 | - <rect key="frame" x="16" y="15.5" width="16" height="9"/> | ||
376 | - <constraints> | ||
377 | - <constraint firstAttribute="width" constant="16" id="16l-ae-SRY"/> | ||
378 | - <constraint firstAttribute="width" secondItem="orB-P1-43H" secondAttribute="height" multiplier="16:9" id="LTF-6F-1BK"/> | ||
379 | - </constraints> | ||
380 | - </imageView> | ||
381 | - </subviews> | ||
382 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
383 | - <gestureRecognizers/> | ||
384 | - <constraints> | ||
385 | - <constraint firstItem="orB-P1-43H" firstAttribute="centerY" secondItem="DOI-gH-jce" secondAttribute="centerY" id="9zk-rO-Bal"/> | ||
386 | - <constraint firstAttribute="trailing" secondItem="orB-P1-43H" secondAttribute="trailing" constant="8" id="BzP-Md-pmS"/> | ||
387 | - <constraint firstItem="5U5-yq-C0i" firstAttribute="centerY" secondItem="DOI-gH-jce" secondAttribute="centerY" id="XUR-oK-Eac"/> | ||
388 | - <constraint firstItem="5U5-yq-C0i" firstAttribute="leading" secondItem="DOI-gH-jce" secondAttribute="leading" constant="8" id="jlC-4X-vmT"/> | ||
389 | - <constraint firstItem="orB-P1-43H" firstAttribute="leading" secondItem="5U5-yq-C0i" secondAttribute="trailing" constant="8" id="pIv-Pk-p8P"/> | ||
390 | - </constraints> | ||
391 | - <connections> | ||
392 | - <outletCollection property="gestureRecognizers" destination="bwD-zo-BfW" appends="YES" id="lGg-fA-w9g"/> | ||
393 | - </connections> | ||
394 | - </view> | ||
395 | - </subviews> | ||
396 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
397 | - <constraints> | ||
398 | - <constraint firstItem="DOI-gH-jce" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="top" id="0Hd-29-n1m"/> | ||
399 | - <constraint firstAttribute="bottom" secondItem="DOI-gH-jce" secondAttribute="bottom" id="0io-Qu-M8N"/> | ||
400 | - <constraint firstAttribute="bottom" secondItem="l2p-Iw-hkv" secondAttribute="bottom" id="27M-dQ-JQa"/> | ||
401 | - <constraint firstItem="DOI-gH-jce" firstAttribute="leading" secondItem="fO6-Ah-i0n" secondAttribute="leading" id="E9W-AB-f3d"/> | ||
402 | - <constraint firstItem="l2p-Iw-hkv" firstAttribute="leading" secondItem="DOI-gH-jce" secondAttribute="trailing" id="PBH-yX-Ii2"/> | ||
403 | - <constraint firstAttribute="height" constant="40" id="cB5-m3-OT4"/> | ||
404 | - <constraint firstAttribute="trailing" secondItem="l2p-Iw-hkv" secondAttribute="trailing" id="mxk-0g-vX5"/> | ||
405 | - <constraint firstItem="l2p-Iw-hkv" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="top" id="q7F-zS-lRk"/> | ||
406 | - </constraints> | ||
407 | - </view> | ||
408 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K6J-Tc-LTg"> | ||
409 | - <rect key="frame" x="0.0" y="617" width="375" height="50"/> | ||
410 | - <subviews> | ||
411 | - <button opaque="NO" alpha="0.60000002384185791" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0O9-fu-b9g"> | ||
412 | - <rect key="frame" x="8" y="12" width="359" height="30"/> | ||
413 | - <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
414 | - <state key="normal" title="下一步"> | ||
415 | - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
416 | - </state> | ||
417 | - <userDefinedRuntimeAttributes> | ||
418 | - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> | ||
419 | - <integer key="value" value="10"/> | ||
420 | - </userDefinedRuntimeAttribute> | ||
421 | - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> | ||
422 | - </userDefinedRuntimeAttributes> | ||
423 | - <connections> | ||
424 | - <action selector="nextStep:" destination="A0M-q7-IGT" eventType="touchUpInside" id="XgW-aA-1mG"/> | ||
425 | - </connections> | ||
426 | - </button> | ||
427 | - </subviews> | ||
428 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
429 | - <constraints> | ||
430 | - <constraint firstAttribute="height" constant="50" id="BQ4-Si-bXm"/> | ||
431 | - <constraint firstItem="0O9-fu-b9g" firstAttribute="leading" secondItem="K6J-Tc-LTg" secondAttribute="leading" constant="8" id="ifw-4f-Jpr"/> | ||
432 | - <constraint firstAttribute="trailing" secondItem="0O9-fu-b9g" secondAttribute="trailing" constant="8" id="isL-T7-Qmd"/> | ||
433 | - <constraint firstAttribute="bottom" secondItem="0O9-fu-b9g" secondAttribute="bottom" constant="8" id="nFg-EW-rQa"/> | ||
434 | - </constraints> | ||
435 | - </view> | ||
436 | - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="PtW-3t-0kg"> | ||
437 | - <rect key="frame" x="0.0" y="104" width="375" height="513"/> | ||
438 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
439 | - <view key="tableFooterView" contentMode="scaleToFill" id="EaE-p5-h1S"> | ||
440 | - <rect key="frame" x="0.0" y="72" width="375" height="1"/> | ||
441 | - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
442 | - </view> | ||
443 | - <prototypes> | ||
444 | - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="aLu-j4-6rM" customClass="SelectSchoolList" customModule="ParentAssistant" customModuleProvider="target"> | ||
445 | - <rect key="frame" x="0.0" y="28" width="375" height="44"/> | ||
446 | - <autoresizingMask key="autoresizingMask"/> | ||
447 | - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="aLu-j4-6rM" id="HwG-k5-D6B"> | ||
448 | - <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> | ||
449 | - <autoresizingMask key="autoresizingMask"/> | ||
450 | - <subviews> | ||
451 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mu7-8F-D7t"> | ||
452 | - <rect key="frame" x="20" y="12" width="42" height="21"/> | ||
453 | - <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
454 | - <nil key="textColor"/> | ||
455 | - <nil key="highlightedColor"/> | ||
456 | - </label> | ||
457 | - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_icon_confirmBtn" translatesAutoresizingMaskIntoConstraints="NO" id="uQB-I2-g76"> | ||
458 | - <rect key="frame" x="335" y="11" width="20" height="20"/> | ||
459 | - <constraints> | ||
460 | - <constraint firstAttribute="height" constant="20" id="O5D-Kd-tnC"/> | ||
461 | - <constraint firstAttribute="width" secondItem="uQB-I2-g76" secondAttribute="height" multiplier="1:1" id="cbI-Yt-6bN"/> | ||
462 | - </constraints> | ||
463 | - </imageView> | ||
464 | - </subviews> | ||
465 | - <constraints> | ||
466 | - <constraint firstItem="mu7-8F-D7t" firstAttribute="leading" secondItem="HwG-k5-D6B" secondAttribute="leading" constant="20" id="Kok-DS-Yde"/> | ||
467 | - <constraint firstItem="uQB-I2-g76" firstAttribute="centerY" secondItem="HwG-k5-D6B" secondAttribute="centerY" id="cIw-K0-Exy"/> | ||
468 | - <constraint firstAttribute="trailing" secondItem="uQB-I2-g76" secondAttribute="trailing" constant="20" id="dVF-Dh-Rtt"/> | ||
469 | - <constraint firstItem="mu7-8F-D7t" firstAttribute="centerY" secondItem="HwG-k5-D6B" secondAttribute="centerY" id="fsT-mg-e1a"/> | ||
470 | - </constraints> | ||
471 | - </tableViewCellContentView> | ||
472 | - <connections> | ||
473 | - <outlet property="isSelect" destination="uQB-I2-g76" id="6wY-JR-T26"/> | ||
474 | - <outlet property="schoolName" destination="mu7-8F-D7t" id="wkp-Qv-j2n"/> | ||
475 | - </connections> | ||
476 | - </tableViewCell> | ||
477 | - </prototypes> | ||
478 | - <connections> | ||
479 | - <outlet property="dataSource" destination="A0M-q7-IGT" id="evO-ib-Hst"/> | ||
480 | - <outlet property="delegate" destination="A0M-q7-IGT" id="Rbx-Y9-br6"/> | ||
481 | - </connections> | ||
482 | - </tableView> | ||
483 | - </subviews> | ||
484 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
485 | - <constraints> | ||
486 | - <constraint firstItem="fO6-Ah-i0n" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="1DX-T5-eqS"/> | ||
487 | - <constraint firstItem="fO6-Ah-i0n" firstAttribute="top" secondItem="UOZ-dT-HdH" secondAttribute="top" id="5SW-dU-bex"/> | ||
488 | - <constraint firstItem="K6J-Tc-LTg" firstAttribute="top" secondItem="PtW-3t-0kg" secondAttribute="bottom" id="DZi-5f-yJP"/> | ||
489 | - <constraint firstItem="fO6-Ah-i0n" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="OTH-hT-IuC"/> | ||
490 | - <constraint firstItem="PtW-3t-0kg" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="SRU-Mk-axC"/> | ||
491 | - <constraint firstItem="PtW-3t-0kg" firstAttribute="top" secondItem="fO6-Ah-i0n" secondAttribute="bottom" id="abD-i3-Y6w"/> | ||
492 | - <constraint firstItem="K6J-Tc-LTg" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="jJc-Sd-TbD"/> | ||
493 | - <constraint firstItem="K6J-Tc-LTg" firstAttribute="trailing" secondItem="UOZ-dT-HdH" secondAttribute="trailing" id="jWn-SM-Y1N"/> | ||
494 | - <constraint firstItem="K6J-Tc-LTg" firstAttribute="bottom" secondItem="UOZ-dT-HdH" secondAttribute="bottom" id="kZg-15-tgT"/> | ||
495 | - <constraint firstItem="PtW-3t-0kg" firstAttribute="leading" secondItem="UOZ-dT-HdH" secondAttribute="leading" id="vLD-zI-Vju"/> | ||
496 | - </constraints> | ||
497 | - <viewLayoutGuide key="safeArea" id="UOZ-dT-HdH"/> | ||
498 | - </view> | ||
499 | - <navigationItem key="navigationItem" title="选择孩子学校" id="Zis-r1-2ac"/> | ||
500 | - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/> | ||
501 | - <connections> | ||
502 | - <outlet property="citySelectbtn" destination="5U5-yq-C0i" id="wfB-6U-FyP"/> | ||
503 | - <outlet property="tableView" destination="PtW-3t-0kg" id="VaJ-gB-cEX"/> | ||
504 | - </connections> | ||
505 | - </viewController> | ||
506 | - <placeholder placeholderIdentifier="IBFirstResponder" id="cjH-Fa-jy0" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
507 | - <tapGestureRecognizer id="bwD-zo-BfW"> | ||
508 | - <connections> | ||
509 | - <action selector="citySelectBtnClick:" destination="A0M-q7-IGT" id="UOI-JJ-Wj0"/> | ||
510 | - </connections> | ||
511 | - </tapGestureRecognizer> | ||
512 | - </objects> | ||
513 | - <point key="canvasLocation" x="844" y="117.39130434782609"/> | ||
514 | - </scene> | ||
515 | - <!--Invitation Code Verification View Controller--> | ||
516 | - <scene sceneID="O88-W5-BCB"> | ||
517 | - <objects> | ||
518 | - <viewController storyboardIdentifier="InvitationCodeVerificationViewControllerVC" id="R3o-G2-oUv" customClass="InvitationCodeVerificationViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> | ||
519 | - <view key="view" contentMode="scaleToFill" id="AKW-ZX-X2g"> | ||
520 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
521 | - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
522 | - <subviews> | ||
523 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="exA-el-IFq"> | ||
524 | - <rect key="frame" x="0.0" y="108.5" width="375" height="250"/> | ||
525 | - <subviews> | ||
526 | - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1fW-dv-WoM"> | ||
527 | - <rect key="frame" x="112.5" y="77" width="150" height="30"/> | ||
528 | - <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
529 | - <constraints> | ||
530 | - <constraint firstAttribute="height" constant="30" id="5hq-lI-iLz"/> | ||
531 | - <constraint firstAttribute="width" constant="150" id="BGF-TZ-RcW"/> | ||
532 | - </constraints> | ||
533 | - <state key="normal" title="下一步"> | ||
534 | - <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
535 | - </state> | ||
536 | - <connections> | ||
537 | - <action selector="nextBtnClick:" destination="R3o-G2-oUv" eventType="touchUpInside" id="F9Y-Wo-UFn"/> | ||
538 | - </connections> | ||
539 | - </button> | ||
540 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证) 如不知道邀请码请拨打电话: 400-123456进行查询" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cMY-Ua-Fom"> | ||
541 | - <rect key="frame" x="8" y="137" width="359" height="51"/> | ||
542 | - <fontDescription key="fontDescription" name=".PingFangSC-Regular" family=".PingFang SC" pointSize="17"/> | ||
543 | - <color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
544 | - <nil key="highlightedColor"/> | ||
545 | - </label> | ||
546 | - <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="填写邀请码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vQA-t4-Eci"> | ||
547 | - <rect key="frame" x="8" y="8" width="360" height="30"/> | ||
548 | - <constraints> | ||
549 | - <constraint firstAttribute="height" constant="30" id="uUH-o5-0a7"/> | ||
550 | - </constraints> | ||
551 | - <nil key="textColor"/> | ||
552 | - <fontDescription key="fontDescription" type="system" pointSize="14"/> | ||
553 | - <textInputTraits key="textInputTraits"/> | ||
554 | - <connections> | ||
555 | - <outlet property="delegate" destination="R3o-G2-oUv" id="RKR-2s-gS5"/> | ||
556 | - </connections> | ||
557 | - </textField> | ||
558 | - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aPt-HX-Yq3"> | ||
559 | - <rect key="frame" x="8" y="46" width="359" height="1"/> | ||
560 | - <color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
561 | - <constraints> | ||
562 | - <constraint firstAttribute="height" constant="1" id="gz9-PX-2oM"/> | ||
563 | - </constraints> | ||
564 | - </view> | ||
565 | - </subviews> | ||
566 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
567 | - <constraints> | ||
568 | - <constraint firstItem="vQA-t4-Eci" firstAttribute="top" secondItem="exA-el-IFq" secondAttribute="top" constant="8" id="5Uu-Sy-vu0"/> | ||
569 | - <constraint firstItem="aPt-HX-Yq3" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="7Ln-yD-VaY"/> | ||
570 | - <constraint firstItem="vQA-t4-Eci" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="7M5-Vx-2Cz"/> | ||
571 | - <constraint firstItem="aPt-HX-Yq3" firstAttribute="top" secondItem="vQA-t4-Eci" secondAttribute="bottom" constant="8" id="976-F3-2gJ"/> | ||
572 | - <constraint firstItem="1fW-dv-WoM" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="EMs-fL-FZD"/> | ||
573 | - <constraint firstItem="cMY-Ua-Fom" firstAttribute="top" secondItem="1fW-dv-WoM" secondAttribute="bottom" constant="30" id="Riq-Xq-a0K"/> | ||
574 | - <constraint firstItem="vQA-t4-Eci" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="db8-a4-dQ5"/> | ||
575 | - <constraint firstItem="cMY-Ua-Fom" firstAttribute="leading" secondItem="exA-el-IFq" secondAttribute="leading" constant="8" id="pdC-1A-R0A"/> | ||
576 | - <constraint firstItem="1fW-dv-WoM" firstAttribute="top" secondItem="aPt-HX-Yq3" secondAttribute="bottom" constant="30" id="qW5-M9-wDD"/> | ||
577 | - <constraint firstAttribute="trailing" secondItem="aPt-HX-Yq3" secondAttribute="trailing" constant="8" id="uG6-EB-i2d"/> | ||
578 | - <constraint firstItem="cMY-Ua-Fom" firstAttribute="centerX" secondItem="exA-el-IFq" secondAttribute="centerX" id="uJO-jO-ou4"/> | ||
579 | - <constraint firstAttribute="height" constant="250" id="xqy-Zc-vv1"/> | ||
580 | - </constraints> | ||
581 | - </view> | ||
582 | - </subviews> | ||
583 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
584 | - <constraints> | ||
585 | - <constraint firstItem="exA-el-IFq" firstAttribute="leading" secondItem="fXU-yt-T3m" secondAttribute="leading" id="1HS-GB-jkp"/> | ||
586 | - <constraint firstItem="exA-el-IFq" firstAttribute="centerX" secondItem="AKW-ZX-X2g" secondAttribute="centerX" id="Auy-9z-eRw"/> | ||
587 | - <constraint firstItem="exA-el-IFq" firstAttribute="centerY" secondItem="AKW-ZX-X2g" secondAttribute="centerY" constant="-100" id="XKh-ba-xKc"/> | ||
588 | - </constraints> | ||
589 | - <viewLayoutGuide key="safeArea" id="fXU-yt-T3m"/> | ||
590 | - </view> | ||
591 | - <connections> | ||
592 | - <outlet property="inputInvitationCode" destination="vQA-t4-Eci" id="OSo-jl-2Ps"/> | ||
593 | - <outlet property="instructions" destination="cMY-Ua-Fom" id="Ofn-M3-LGa"/> | ||
594 | - <outlet property="nextBtn" destination="1fW-dv-WoM" id="Fne-zE-jM0"/> | ||
595 | - </connections> | ||
596 | - </viewController> | ||
597 | - <placeholder placeholderIdentifier="IBFirstResponder" id="a4n-d8-QFK" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
598 | - </objects> | ||
599 | - <point key="canvasLocation" x="1572" y="117.39130434782609"/> | ||
600 | - </scene> | ||
601 | - </scenes> | ||
602 | - <resources> | ||
603 | - <image name="evaluation_icon_pushDown" width="16" height="9"/> | ||
604 | - <image name="my_icon_confirmBtn" width="21" height="19"/> | ||
605 | - </resources> | ||
606 | -</document> |
ParentAssistant/ParentAssistant/Classes/util/AccountManager.swift
@@ -222,13 +222,13 @@ class AccountManager: NSObject { | @@ -222,13 +222,13 @@ class AccountManager: NSObject { | ||
222 | 222 | ||
223 | import HandyJSON | 223 | import HandyJSON |
224 | class UserInfoModel: HandyJSON { | 224 | class UserInfoModel: HandyJSON { |
225 | - var parentId = Int() | 225 | + var parentId = String() |
226 | var name = String() | 226 | var name = String() |
227 | var bindSchoolFlag = Bool() | 227 | var bindSchoolFlag = Bool() |
228 | var mobile = String() | 228 | var mobile = String() |
229 | var image = String() | 229 | var image = String() |
230 | var userid = String() | 230 | var userid = String() |
231 | - var sex = Int() | 231 | + var sex = String() |
232 | required init(){} | 232 | required init(){} |
233 | } | 233 | } |
234 | class StudentClassInfoModel: HandyJSON { | 234 | class StudentClassInfoModel: HandyJSON { |
@@ -236,21 +236,21 @@ class StudentClassInfoModel: HandyJSON { | @@ -236,21 +236,21 @@ class StudentClassInfoModel: HandyJSON { | ||
236 | var photo = String() | 236 | var photo = String() |
237 | var cityName = String() | 237 | var cityName = String() |
238 | var cardNumber = String() | 238 | var cardNumber = String() |
239 | - var classId = Int() | ||
240 | - var grade = Int() | 239 | + var classId = String() |
240 | + var grade = String() | ||
241 | var studentName = String() | 241 | var studentName = String() |
242 | var studentCode = String() | 242 | var studentCode = String() |
243 | - var parentId = Int() | 243 | + var parentId = String() |
244 | var className = String() | 244 | var className = String() |
245 | var areaName = String() | 245 | var areaName = String() |
246 | var gradename = String() | 246 | var gradename = String() |
247 | - var count = Int() | ||
248 | - var schollId = Int() | 247 | + var count = String() |
248 | + var schoolId = String() | ||
249 | var schoolName = String() | 249 | var schoolName = String() |
250 | var studentUserId = String() | 250 | var studentUserId = String() |
251 | - var studentId = Int() | ||
252 | - var parentMobile = Int() | ||
253 | - var sex = Int() | 251 | + var studentId = String() |
252 | + var parentMobile = String() | ||
253 | + var sex = String() | ||
254 | 254 | ||
255 | required init(){} | 255 | required init(){} |
256 | } | 256 | } |
ParentAssistant/ParentAssistant/Classes/util/HTTPServer.swift
@@ -239,8 +239,8 @@ final class HTTPServer{ | @@ -239,8 +239,8 @@ final class HTTPServer{ | ||
239 | //MARK: - 成长 | 239 | //MARK: - 成长 |
240 | //MARK: 应用 | 240 | //MARK: 应用 |
241 | ///补卡 | 241 | ///补卡 |
242 | - func postStudentMendCard(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | ||
243 | - KHttp.POST(url: URL_POST_MEND_CARD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | 242 | + func getStudentMendCard(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ |
243 | + KHttp.GET(url: URL_POST_MEND_CARD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | ||
244 | } | 244 | } |
245 | ///考勤 | 245 | ///考勤 |
246 | func getStudentCheckList(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | 246 | func getStudentCheckList(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ |
ParentAssistant/ParentAssistant/Classes/util/view/AlertShowView.swift
@@ -10,7 +10,7 @@ import UIKit | @@ -10,7 +10,7 @@ import UIKit | ||
10 | 10 | ||
11 | class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { | 11 | class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { |
12 | 12 | ||
13 | - typealias AlertBackBlock = (AnyObject)->() | 13 | + typealias AlertBackBlock = (Int)->() |
14 | 14 | ||
15 | 15 | ||
16 | lazy var tableView = { ()-> UITableView in | 16 | lazy var tableView = { ()-> UITableView in |
@@ -107,8 +107,7 @@ class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { | @@ -107,8 +107,7 @@ class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { | ||
107 | return cell! | 107 | return cell! |
108 | } | 108 | } |
109 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 109 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
110 | - let selectData = self.dataArr[indexPath.row] | ||
111 | - self.AlertBlock!(selectData) | 110 | + self.AlertBlock!(indexPath.row) |
112 | closeView() | 111 | closeView() |
113 | } | 112 | } |
114 | required init?(coder aDecoder: NSCoder) { | 113 | required init?(coder aDecoder: NSCoder) { |