Commit e39c2d33d168827bf34e0a8fe9e8a308a08e1815

Authored by Cao yang
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) {