Commit fafdc5529e57748767a14b5dcd996c378cdbadbb

Authored by Cao yang
1 parent eaf34b66
Exists in parentassistant

封装searchbar ,优化咨询频道代码,适配UI等

Showing 28 changed files with 367 additions and 273 deletions   Show diff stats
ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj
... ... @@ -81,6 +81,8 @@
81 81 ADC9AB82207C673300348EF1 /* SceneMiddleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC9AB81207C673300348EF1 /* SceneMiddleCell.xib */; };
82 82 ADC9AB84207C673C00348EF1 /* SceneDownCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC9AB83207C673C00348EF1 /* SceneDownCell.xib */; };
83 83 ADC9AB88207C940700348EF1 /* ProgramViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC9AB87207C940700348EF1 /* ProgramViewController.swift */; };
  84 + ADCDA070208AE317004F1852 /* SearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADCDA06F208AE317004F1852 /* SearchBarView.swift */; };
  85 + ADCDA072208B2982004F1852 /* InfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADCDA071208B2982004F1852 /* InfoModel.swift */; };
84 86 ADE33B312062202300BEA6E6 /* Macro.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE33B302062202300BEA6E6 /* Macro.swift */; };
85 87 ADF159612069E00000A9485D /* CalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADF159602069E00000A9485D /* CalendarView.swift */; };
86 88 ADF15E7620883D1B00381EE1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ADF15E7520883D1B00381EE1 /* Assets.xcassets */; };
... ... @@ -262,6 +264,8 @@
262 264 ADC9AB81207C673300348EF1 /* SceneMiddleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SceneMiddleCell.xib; sourceTree = "<group>"; };
263 265 ADC9AB83207C673C00348EF1 /* SceneDownCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SceneDownCell.xib; sourceTree = "<group>"; };
264 266 ADC9AB87207C940700348EF1 /* ProgramViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgramViewController.swift; sourceTree = "<group>"; };
  267 + ADCDA06F208AE317004F1852 /* SearchBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBarView.swift; sourceTree = "<group>"; };
  268 + ADCDA071208B2982004F1852 /* InfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoModel.swift; sourceTree = "<group>"; };
265 269 ADE33B302062202300BEA6E6 /* Macro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Macro.swift; sourceTree = "<group>"; };
266 270 ADF159602069E00000A9485D /* CalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarView.swift; sourceTree = "<group>"; };
267 271 ADF15E7520883D1B00381EE1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
... ... @@ -467,6 +471,7 @@
467 471 599364E0204E62E700C8B371 /* Information */ = {
468 472 isa = PBXGroup;
469 473 children = (
  474 + ADCDA073208B298D004F1852 /* Model */,
470 475 599364E1204E62E700C8B371 /* InformationViewController.swift */,
471 476 599364DD204E62E700C8B371 /* ChannelViewController.swift */,
472 477 599364DE204E62E700C8B371 /* Information.storyboard */,
... ... @@ -642,6 +647,14 @@
642 647 path = Program;
643 648 sourceTree = "<group>";
644 649 };
  650 + ADCDA073208B298D004F1852 /* Model */ = {
  651 + isa = PBXGroup;
  652 + children = (
  653 + ADCDA071208B2982004F1852 /* InfoModel.swift */,
  654 + );
  655 + path = Model;
  656 + sourceTree = "<group>";
  657 + };
645 658 B605235D289EDBCA5C5AF2C5 /* Frameworks */ = {
646 659 isa = PBXGroup;
647 660 children = (
... ... @@ -892,6 +905,7 @@
892 905 BFF9B7F32057A29D00F39B3E /* TableEmptyView.xib */,
893 906 AD639F0420897CBC0028BE73 /* AlertShowView.swift */,
894 907 AD639F082089D8670028BE73 /* PickSelectView.swift */,
  908 + ADCDA06F208AE317004F1852 /* SearchBarView.swift */,
895 909 );
896 910 path = view;
897 911 sourceTree = "<group>";
... ... @@ -1162,7 +1176,9 @@
1162 1176 BFEAAAC4205257460072FAAF /* LXCalendarMonthModel.m in Sources */,
1163 1177 BFA7443A207DB6EE00845D30 /* ActivationSchoolCardViewController.swift in Sources */,
1164 1178 BF38847E205CDE2D00A240EF /* JSViewController.swift in Sources */,
  1179 + ADCDA070208AE317004F1852 /* SearchBarView.swift in Sources */,
1165 1180 ADE33B312062202300BEA6E6 /* Macro.swift in Sources */,
  1181 + ADCDA072208B2982004F1852 /* InfoModel.swift in Sources */,
1166 1182 ADF159612069E00000A9485D /* CalendarView.swift in Sources */,
1167 1183 AD122ACA2084498F00C7D0AD /* ProgramVacateAddView.swift in Sources */,
1168 1184 BF406CD82057B529000A6681 /* MessageTableViewCell.swift in Sources */,
... ...
ParentAssistant/ParentAssistant.xcodeproj/xcuserdata/caoyang.xcuserdatad/xcschemes/xcschememanagement.plist
... ... @@ -10,5 +10,18 @@
10 10 <integer>11</integer>
11 11 </dict>
12 12 </dict>
  13 + <key>SuppressBuildableAutocreation</key>
  14 + <dict>
  15 + <key>BF7A4C2F204CD55300460463</key>
  16 + <dict>
  17 + <key>primary</key>
  18 + <true/>
  19 + </dict>
  20 + <key>BF7A4C46204CD55500460463</key>
  21 + <dict>
  22 + <key>primary</key>
  23 + <true/>
  24 + </dict>
  25 + </dict>
13 26 </dict>
14 27 </plist>
... ...
ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
... ... @@ -20,11 +20,11 @@
20 20 ignoreCount = "0"
21 21 continueAfterRunningActions = "No"
22 22 filePath = "ParentAssistant/Classes/controllers/Grow/GrowViewController.swift"
23   - timestampString = "545907653.422401"
  23 + timestampString = "545996291.249851"
24 24 startingColumnNumber = "9223372036854775807"
25 25 endingColumnNumber = "9223372036854775807"
26   - startingLineNumber = "161"
27   - endingLineNumber = "161"
  26 + startingLineNumber = "162"
  27 + endingLineNumber = "162"
28 28 landmarkName = "switchChildrenAction()"
29 29 landmarkType = "7">
30 30 </BreakpointContent>
... ...
ParentAssistant/ParentAssistant/AppDelegate.swift
... ... @@ -16,6 +16,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
16 16 var conn:Reachability!
17 17 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
18 18 setUpYXIM()
  19 +
19 20 //1.设置网络状态监听
20 21 NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.networkStatusChange), name: NSNotification.Name.reachabilityChanged, object: nil)
21 22 // 2、获得网络Reachability对象
... ... @@ -56,13 +57,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
56 57 func setUpYXIM(){
57 58 var appkey = ""
58 59 var cername = ""
59   - if Debug.isFormal{
60   - appkey = "a1ff0bc08fa0d6f95b480d131e55584b"
61   - cername = "hxyproductpush"
62   - }else{
  60 + #if DEBUG
63 61 appkey = "330158c080acdf4dc1092d6a74576c2c"
64 62 cername = "parentdevelop"
65   - }
  63 + #else
  64 + appkey = "a1ff0bc08fa0d6f95b480d131e55584b"
  65 + cername = "hxyproductpush"
  66 + #endif
  67 +// if Debug.isFormal{
  68 +// appkey = "a1ff0bc08fa0d6f95b480d131e55584b"
  69 +// cername = "hxyproductpush"
  70 +// }else{
  71 +// appkey = "330158c080acdf4dc1092d6a74576c2c"
  72 +// cername = "parentdevelop"
  73 +// }
66 74 let option = NIMSDKOption(appKey: appkey)
67 75 option.apnsCername = cername
68 76 NIMSDK.shared().register(with: option)
... ... @@ -298,6 +306,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
298 306 }
299 307 }
300 308 }
301   -
302 309 }
303 310  
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift
... ... @@ -65,7 +65,6 @@ class GrowViewController: UIViewController,UIScrollViewDelegate {
65 65 //设置导航栏标题
66 66 self.navigationItem.titleView = self.titleView
67 67 self.navigationItem.titleView?.center.x = screenWidth/2
68   - print(self.navigationItem.titleView!.frame)
69 68 self.view.addSubview(contentScrollView)
70 69  
71 70 self.title = "成长"
... ... @@ -110,16 +109,18 @@ class GrowViewController: UIViewController,UIScrollViewDelegate {
110 109 //MARK: 导航栏视图UI
111 110 func drawHeadView () {
112 111 //左按钮
113   - let leftView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 60, height: 44))
114   - let titleLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: 44))
  112 + let leftView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 70, height: 44))
  113 + let titleLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 60, height: 44))
115 114  
116 115 titleLab.font = UIFont.systemFont(ofSize: 15)
117 116 titleLab.textAlignment = .center
118 117 titleLab.textColor = .white
  118 + titleLab.numberOfLines = 0
  119 + titleLab.adjustsFontSizeToFitWidth = true
119 120 self.titleLeftLab = titleLab
120 121 leftView.addSubview(titleLab)
121 122  
122   - let imageView = UIImageView.init(frame: CGRect.init(x: 50, y: 11, width: 10, height: 22))
  123 + let imageView = UIImageView.init(frame: CGRect.init(x: 60, y: 11, width: 10, height: 22))
123 124 imageView.image = UIImage.init(named: "report_white_pull")
124 125 imageView.contentMode = .scaleAspectFit
125 126 leftView.addSubview(imageView)
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCardViewController.swift
... ... @@ -33,7 +33,7 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate {
33 33 }()
34 34  
35 35 @objc func applyAction(){
36   - print("补卡申请提交")
  36 + DebugLog( "补卡提交")
37 37 let params = ["studentid":1,"onecard":"sss"] as [String : Any]
38 38 HTTPServer.shared.postStudentMendCard(parameters: params as [String : AnyObject]) { (backData, error) in
39 39 print(backData!)
... ... @@ -66,7 +66,6 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate {
66 66  
67 67 @objc func handleTap(sender:UITapGestureRecognizer){
68 68 if sender.state == .ended {
69   - print("收起键盘")
70 69 self.cardInputTextField.resignFirstResponder()
71 70 }
72 71 sender.cancelsTouchesInView = false
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift
... ... @@ -56,7 +56,7 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi
56 56 SVProgressHUD.dismiss()
57 57 if error == nil && JSON.fromString(backData)!["status"].intValue == 1 {
58 58 let data = JSON.fromString(backData)!["data"].arrayValue
59   - print(backData!)
  59 + DebugLog(backData!)
60 60 for i in 0..<data.count {
61 61 let dic = data[i].dictionary
62 62 if let model = StudentCardModel.deserialize(from: dic){
... ... @@ -91,7 +91,6 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi
91 91 cell.timeSelectBtn.setTitle(timeSelectString, for: UIControlState.normal)
92 92 cell.checkName.text = studentModel.studentName
93 93 cell.backBlock = {
94   - print("选择日期")
95 94 self.selectTimeAction()
96 95 }
97 96 return cell
... ... @@ -109,7 +108,6 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi
109 108 self.addAlertView.setRowAndTitle(title: [], type: PickSelectView.AlertType.TimeDateType)
110 109 self.addAlertView.showView()
111 110 self.addAlertView.alertTimeBlock = {str in
112   - print("backdata= \(str)")
113 111 self.timeSelectString = str
114 112 self.downLoadDataFromNet(time: str)
115 113 }
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramVacateViewController.swift
... ... @@ -23,9 +23,9 @@ class ProgramVacateViewController: UIViewController,UITableViewDelegate,UITableV
23 23 }()
24 24  
25 25 lazy var bottomBtn = {()-> UIButton in
26   - let btn = UIButton.init(frame: CGRect.init(x: screenWidth/2-100, y: screenHeight-66-50, width: 200, height: 40))
  26 + let btn = UIButton.init(frame: CGRect.init(x: 50, y: screenHeight-66-50, width: screenWidth-100, height: 40))
27 27 btn.setTitle("请假", for: UIControlState.normal)
28   - btn.setTitleColor(UIColor.black, for: UIControlState.normal)
  28 + btn.setTitleColor(UIColor.white, for: UIControlState.normal)
29 29 btn.backgroundColor = Theme.topBarColor()
30 30 btn.layer.cornerRadius = 5
31 31 btn.clipsToBounds = true
... ... @@ -42,7 +42,7 @@ class ProgramVacateViewController: UIViewController,UITableViewDelegate,UITableV
42 42  
43 43 /// 请假页面
44 44 @objc func addVacateAction(){
45   - print("申请请假!")
  45 +
46 46 let vc = ProgramVacateAddViewController()
47 47 vc.title = "申请请假"
48 48 vc.view.backgroundColor = backGroundColor
... ... @@ -140,8 +140,6 @@ class ProgramVacateViewController: UIViewController,UITableViewDelegate,UITableV
140 140  
141 141 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
142 142 if indexPath.section == 1 && indexPath.row != 0 && vacateRecodeArray.count>0 {
143   -
144   - print(indexPath.row)
145 143 let vc = ProgramVacateDetailViewController()
146 144 vc.view.backgroundColor = UIColor.white
147 145 vc.title = "请假详情"
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramViewController.swift
... ... @@ -79,7 +79,6 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat
79 79 }
80 80  
81 81 @objc func gotoChildView () {
82   - print("去个人中心页面-我的孩子!")
83 82 let vc = Story.instantiateViewControllerWithIdentifier("MyChildrenViewController", storyName: "My") as! MyChildrenViewController
84 83 self.navigationController?.pushViewController(vc, animated: true)
85 84 }
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/Report/MoralViewController.swift
... ... @@ -45,7 +45,8 @@ class MoralViewController: UIViewController,UITableViewDelegate,UITableViewDataS
45 45 self.data = JSON.fromString(backData)!["data"].dictionaryValue
46 46  
47 47 if !self.data.isEmpty{
48   - print(self.data)
  48 +
  49 + DebugLog( self.data)
49 50 }
50 51 }
51 52 }
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportView/CalendarView.swift
... ... @@ -81,7 +81,8 @@ class CalendarView: UIView,UICollectionViewDelegate,UICollectionViewDataSource {
81 81 }
82 82 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
83 83 if indexPath.row >= firstDay-1+7 && indexPath.row < todayDay+7+firstDay-1 {
84   - print("点击了 ...\(indexPath.row+1-7-firstDay+1)号")
  84 +
  85 + DebugLog( "点击了 ...\(indexPath.row+1-7-firstDay+1)号")
85 86 }
86 87 }
87 88 required init?(coder aDecoder: NSCoder) {
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportView/EducationDetailCell.swift
... ... @@ -18,7 +18,6 @@ class EducationDetailCell: UITableViewCell {
18 18  
19 19 let rect = CGRect.init(x: 10, y: 60, width: screenWidth-20, height: screenWidth*0.62-60)
20 20 customLineChart = LineChartView.init(frame: rect)
21   - print("linechart frame = \(customLineChart.frame)")
22 21 customLineChart.drawUI(xLableArr: nil)
23 22 let arr1 = [4,4,2,1,3]
24 23 let arr2 = [2,1,4,4,5]
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportView/LineChartView.swift
... ... @@ -158,8 +158,6 @@ class LineChartView: UIView {
158 158 self.addSubview(newLab)
159 159 yLabArray.append(newLab)
160 160 }
161   - }else{
162   - print(yLabArray)
163 161 }
164 162 btnTouch = index
165 163  
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportView/ReportHeaderView.swift
... ... @@ -85,7 +85,8 @@ class ReportHeaderView: UIView,UICollectionViewDelegate,UICollectionViewDataSour
85 85 }
86 86 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
87 87 if indexPath.row >= firstDay-1 && indexPath.row < todayDate+firstDay-1 {
88   - print("点击了 ...\(indexPath.row+1-firstDay+1)号")
  88 +
  89 + DebugLog( "点击了 ...\(indexPath.row+1-firstDay+1)号")
89 90 }
90 91 }
91 92  
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift
... ... @@ -14,32 +14,81 @@ class InformationViewController: UIViewController,UISearchBarDelegate {
14 14 var topADs:[ADSModel]=[]
15 15 var isFirstviewController:Bool=true
16 16 var channel:Int=0
  17 +
  18 + //导航栏左侧按钮
  19 + lazy var leftCityView = {()-> UIView in
  20 + //左按钮
  21 + let leftView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 70, height: 44))
  22 + let titleLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 60, height: 44))
  23 +
  24 + titleLab.font = UIFont.systemFont(ofSize: 15)
  25 + titleLab.numberOfLines = 0
  26 + titleLab.adjustsFontSizeToFitWidth = true
  27 + titleLab.textAlignment = .center
  28 + titleLab.textColor = .white
  29 + titleLab.text = localAddress
  30 + self.leftLabel = titleLab
  31 + leftView.addSubview(titleLab)
  32 +
  33 + let imageView = UIImageView.init(frame: CGRect.init(x: 60, y: 11, width: 10, height: 22))
  34 + imageView.image = UIImage.init(named: "report_white_pull")
  35 + imageView.contentMode = .scaleAspectFit
  36 + leftView.addSubview(imageView)
  37 +
  38 + leftView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(EvaluationViewController.getAddreess(tap:))))
  39 + return leftView
  40 + }()
  41 +
17 42 override func viewDidLoad() {
18 43 super.viewDidLoad()
19   -
20   - self.configTheme()
21   -
22   - // Do any additional setup after loading the view.
23   - var searchViewFrame = CGRect(x: 0, y: 0, width: getScreenWidth()-100, height: 30)
24   -
  44 +
  45 + let item = UIBarButtonItem.init(title: "返回", style: .plain, target: self, action: nil)
  46 + self.navigationItem.backBarButtonItem = item
  47 +
  48 + drawTopUI()
  49 +
  50 + }
  51 + override func viewWillAppear(_ animated: Bool) {
  52 + super.viewWillAppear(animated)
  53 +
25 54 if isFirstviewController{
26   - self.navigationItem.title = ""
27   - addLeftBarBtn()
28   - }else{
29   - searchViewFrame.size.width = getScreenWidth()-60
  55 + let leftBtn = UIBarButtonItem.init(customView: self.leftCityView)
  56 + self.navigationItem.leftBarButtonItem = leftBtn
  57 + if localAddress == "未知" {
  58 + LocationManger.shared.block = { str in
  59 + localAddress = str
  60 + self.leftLabel.text = localAddress
  61 + self.getDataFromNet()
  62 + }
  63 + }
30 64 }
31   - let searchView = UISearchBar(frame: searchViewFrame)
32   - let view = UIView(frame: CGRect(x: 0, y: 7, width: searchViewFrame.size.width, height: 30))
33   - searchView.delegate = self
34   - searchView.placeholder = "请输入搜索内容"
35   - searchView.showsCancelButton = false
36   - view.addSubview(searchView)
37   - self.navigationItem.titleView = view
38   - self.navigationController?.navigationBar.tintColor=UIColor.white
  65 + self.getDataFromNet()
39 66 }
40   -
41   - private func getDataFromNet(){
  67 + func drawTopUI(){
42 68  
  69 + self.configTheme()
  70 + //搜索框
  71 + let searchView = SearchBarView.init(frame: CGRect.init(x: 0, y: 0, width: screenWidth-100, height: navigationBarHeight!))
  72 + //MARK:搜索框搜索回调
  73 + searchView.block = { str,type in
  74 + DebugLog(str)
  75 + switch type {
  76 + case .SearchType:
  77 + self.getList(key: str)
  78 + case .CancelType:
  79 + self.getDataFromNet()
  80 + }
  81 + }
  82 + self.navigationItem.titleView = searchView
  83 + }
  84 + override func viewWillDisappear(_ animated: Bool) {
  85 + super.viewWillDisappear(animated)
  86 + SVProgressHUD.dismiss()
  87 + }
  88 + //MARK: - 获取该城市下的数据
  89 + private func getDataFromNet(){
  90 + //position 广告位置0-首次广告位1-开屏广告位2-资讯首页3-频道首页4-频道内容5-文章内容页
  91 + SVProgressHUD.show()
43 92 let group = DispatchGroup()
44 93 var position:Int = 2
45 94 if !self.isFirstviewController {
... ... @@ -72,48 +121,27 @@ class InformationViewController: UIViewController,UISearchBarDelegate {
72 121 group.leave()
73 122 })
74 123 group.notify(queue: DispatchQueue.main) {
  124 + SVProgressHUD.dismiss()
75 125 self.collectView.reloadData()
76 126 }
77 127 }
78   -
79   -
80   - func getData(){
81   - let topADsQueue = DispatchQueue(label: "topADs")
82   - topADsQueue.async {
83   - //position 广告位置0-首次广告位1-开屏广告位2-资讯首页3-频道首页4-频道内容5-文章内容页
84   - var position:Int = 2
85   - if !self.isFirstviewController {
86   - position = 3
87   - }
88   - HTTPServer.shared.getAds(["position":position as AnyObject,"areaName":localAddress as AnyObject], completionHandler: { (str, error) in//getPercentEncodingString(str: localAddress)
89   - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
90   - if json["status"] == 1 && error == nil{
91   - self.topADs.removeAll()
92   - for item in json.contentData().arrayValue{
93   - self.topADs.append(ADSModel(j: item))
94   - }
95   - self.collectView.reloadData()
96   - }
97   - }, failHandler: { (error) in
98   -
99   - })
100   - })
101   - }
102   - topADsQueue.async {
103   - let dic = self.getListDic()
104   - HTTPServer.shared.getChannelInfo(dic, completionHandler: { (str, error) in
105   - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
106   - if json["status"] == 1 && error == nil{
107   - self.data = ChannelDemol(j: json.contentData())
108   - self.collectView.reloadData()
109   - }
110   - }, failHandler: { (error) in
111   -
112   - })
113   - })
  128 + //MARK: - 地址选择回调
  129 + @objc func getAddreess(tap:UITapGestureRecognizer){
  130 + tap.view?.isUserInteractionEnabled = false
  131 + LZCityPickerController.showPicker(in: self
  132 + , select: { (address, province, city, area, isSelect) in
  133 + if isSelect{
  134 + tap.view?.isUserInteractionEnabled = true
  135 + self.leftLabel.text = area!
  136 + localAddress = area!
  137 + self.getDataFromNet()
  138 + }
  139 + }) {
  140 + tap.view?.isUserInteractionEnabled = true
114 141 }
115 142 }
116 143  
  144 + //MARK: - 搜索框搜索咨询
117 145 func getList(key:String?) {
118 146 if key == nil{
119 147 return
... ... @@ -149,81 +177,8 @@ class InformationViewController: UIViewController,UISearchBarDelegate {
149 177 dic.updateValue(toFirstPage as AnyObject, forKey: "toFirstPage")
150 178 return dic
151 179 }
152   -
153   - //左上交城市选择按钮添加
154   - func addLeftBarBtn(){
155   - let leftbtn = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
156   - leftLabel = UILabel(frame: CGRect(x: 0, y: 10, width: 60, height: 20))
157   - leftLabel.text = localAddress
158   - leftLabel.textColor = UIColor.white
159   - leftLabel.sizeToFit()
160   - let image = UIImageView(frame: CGRect(x: leftLabel.frame.maxX+4, y: 15, width: 16, height: 9))
161   - image.image = #imageLiteral(resourceName: "evaluation_icon_pushDown")
162   - leftbtn.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(EvaluationViewController.getAddreess(tap:))))
163   - leftbtn.addSubview(leftLabel)
164   - leftbtn.addSubview(image)
165   - leftbtn.frame.size = CGSize(width: image.frame.maxX+4, height: 40)
166   - self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: leftbtn)
167   - }
168   -
169   - //地址选择
170   - @objc func getAddreess(tap:UITapGestureRecognizer){
171   - tap.view?.isUserInteractionEnabled = false
172   - LZCityPickerController.showPicker(in: self
173   - , select: { (address, province, city, area, isSelect) in
174   - if isSelect{
175   - tap.view?.isUserInteractionEnabled = true
176   - self.selectCity(city: area!)
177   - }
178   - }) {
179   - tap.view?.isUserInteractionEnabled = true
180   - }
181   - }
182 180  
183   - //完成选择城市
184   - func selectCity(city: String) {
185   - localAddress = city
186   - addLeftBarBtn()
187   -// getData()
188   - getDataFromNet()
189   -
190   - }
191   -
192   - func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
193   - searchBar.showsCancelButton = true
194   - }
195   -
196   - func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
197   - searchData(searchBar)
198   - }
199   -
200   - func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
201   - searchData(searchBar)
202   - }
203   -
204   - //搜索资讯
205   - func searchData(_ searchBar: UISearchBar){
206   - getList(key: searchBar.text)
207   - searchBar.resignFirstResponder()
208   - searchBar.showsCancelButton = false
209   -
210   - }
211   -
212   - override func viewWillDisappear(_ animated: Bool) {
213   - super.viewWillDisappear(animated)
214   - }
215   -
216   - override func viewWillAppear(_ animated: Bool) {
217   - super.viewWillAppear(animated)
218   -// getData()
219   - getDataFromNet()
220   - if isFirstviewController{
221   - addLeftBarBtn()
222   - }else{
223   -
224   - }
225 181  
226   - }
227 182 override func didReceiveMemoryWarning() {
228 183 super.didReceiveMemoryWarning()
229 184 // Dispose of any resources that can be recreated.
... ... @@ -419,83 +374,4 @@ extension ChannelSelectView:UICollectionViewDataSource,UICollectionViewDelegateF
419 374 }
420 375 }
421 376  
422   -class ChannelDemol:NSObject{
423   - var id:Int=0 // 频道ID ,
424   - var channelName:String=""// 频道名称 ,
425   - var channelImage:String=""// 频道图片 ,
426   - var orderById:Int=0 // 频道排序 ,
427   - var subchannel:[SubchannelDemol] = []// 二级频道 ,
428   - var channelContent:[ChannelContentDemol] = []// 频道信息
429   - init(j:JSON){
430   - id = j["id"].intValue
431   - channelName = j["channelName"].stringValue
432   - channelName = j["channelName"].stringValue
433   - orderById = j["orderById"].intValue
434   - for item in j["subchannel"].arrayValue {
435   - subchannel.append(SubchannelDemol(j: item))
436   - }
437   - for item in j["channelContent"].arrayValue {
438   - channelContent.append(ChannelContentDemol(j: item))
439   - }
440   - }
441   -}
442   -
443   -class SubchannelDemol: NSObject {
444   - var id:Int=0 // 二级频道ID ,
445   - var channelName:String=""// 二级频道名称 ,
446   - var channelImage:String=""// 二级频道图片 ,
447   - var orderById:Int=0// 二级工具排序,
448   - var url:String=""// 二级工具链接
449   - init(j:JSON){
450   - id = j["id"].intValue
451   - channelName = j["channelName"].stringValue
452   - channelImage = j["channelImage"].stringValue
453   - orderById = j["orderById"].intValue
454   - url = j["url"].stringValue
455   - }
456   -
457   -}
458   -
459   -class ChannelContentDemol: NSObject {
460   - var id:Int=0// 资讯ID ,
461   - var image:String=""// 资讯标题图片 ,
462   - var title:String=""// 资讯标题 ,
463   - var url:String=""// 资讯链接 ,
464   - var content:String=""// 资讯内容 ,
465   - var forwardingNum:Int=0// 资讯转发数 ,
466   - var talkNum:Int=0 // 评论数 ,
467   - var lookNum:Int = 0 //浏览数
468   - var orderById:Int=0// 资讯排序
469   - var isAds:Int=0// 是否为广告 1是广告
470   - init(j:JSON){
471   - id = j["id"].intValue
472   - image = j["image"].stringValue
473   - title = j["title"].stringValue
474   - url = j["url"].stringValue
475   - content = j["content"].stringValue
476   - forwardingNum = j["forwardingNum"].intValue
477   - talkNum = j["talkNum"].intValue
478   - lookNum = j["lookNum"].intValue
479   - orderById = j["orderById"].intValue
480   - isAds = j["isAds"].intValue
481   - }
482   -
483   -}
484   -
485   -class ADSModel: NSObject {
486   - var id:Int=0// 广告ID ,
487   - var location:Int=0// 广告位 ,
488   - var describe:String=""// 广告内容 ,
489   - var fileSrc:String=""// 广告内容 ,
490   - var url:String=""// 广告跳转链接 ,
491   - var orderById:Int=0// 广告排序
492   - init(j:JSON){
493   - id = j["id"].intValue
494   - location = j["location"].intValue
495   - describe = j["describe"].stringValue
496   - fileSrc = j["fileSrc"].stringValue
497   - url = j["url"].stringValue
498   - orderById = j["orderById"].intValue
499   - }
500 377  
501   -}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Information/Model/InfoModel.swift 0 → 100644
... ... @@ -0,0 +1,93 @@
  1 +//
  2 +// InfoModel.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/4/21.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class InfoModel: NSObject {
  12 +
  13 +}
  14 +class ChannelDemol:NSObject{
  15 + var id:Int=0 // 频道ID ,
  16 + var channelName:String=""// 频道名称 ,
  17 + var channelImage:String=""// 频道图片 ,
  18 + var orderById:Int=0 // 频道排序 ,
  19 + var subchannel:[SubchannelDemol] = []// 二级频道 ,
  20 + var channelContent:[ChannelContentDemol] = []// 频道信息
  21 + init(j:JSON){
  22 + id = j["id"].intValue
  23 + channelName = j["channelName"].stringValue
  24 + channelName = j["channelName"].stringValue
  25 + orderById = j["orderById"].intValue
  26 + for item in j["subchannel"].arrayValue {
  27 + subchannel.append(SubchannelDemol(j: item))
  28 + }
  29 + for item in j["channelContent"].arrayValue {
  30 + channelContent.append(ChannelContentDemol(j: item))
  31 + }
  32 + }
  33 +}
  34 +
  35 +class SubchannelDemol: NSObject {
  36 + var id:Int=0 // 二级频道ID ,
  37 + var channelName:String=""// 二级频道名称 ,
  38 + var channelImage:String=""// 二级频道图片 ,
  39 + var orderById:Int=0// 二级工具排序,
  40 + var url:String=""// 二级工具链接
  41 + init(j:JSON){
  42 + id = j["id"].intValue
  43 + channelName = j["channelName"].stringValue
  44 + channelImage = j["channelImage"].stringValue
  45 + orderById = j["orderById"].intValue
  46 + url = j["url"].stringValue
  47 + }
  48 +
  49 +}
  50 +
  51 +class ChannelContentDemol: NSObject {
  52 + var id:Int=0// 资讯ID ,
  53 + var image:String=""// 资讯标题图片 ,
  54 + var title:String=""// 资讯标题 ,
  55 + var url:String=""// 资讯链接 ,
  56 + var content:String=""// 资讯内容 ,
  57 + var forwardingNum:Int=0// 资讯转发数 ,
  58 + var talkNum:Int=0 // 评论数 ,
  59 + var lookNum:Int = 0 //浏览数
  60 + var orderById:Int=0// 资讯排序
  61 + var isAds:Int=0// 是否为广告 1是广告
  62 + init(j:JSON){
  63 + id = j["id"].intValue
  64 + image = j["image"].stringValue
  65 + title = j["title"].stringValue
  66 + url = j["url"].stringValue
  67 + content = j["content"].stringValue
  68 + forwardingNum = j["forwardingNum"].intValue
  69 + talkNum = j["talkNum"].intValue
  70 + lookNum = j["lookNum"].intValue
  71 + orderById = j["orderById"].intValue
  72 + isAds = j["isAds"].intValue
  73 + }
  74 +
  75 +}
  76 +
  77 +class ADSModel: NSObject {
  78 + var id:Int=0// 广告ID ,
  79 + var location:Int=0// 广告位 ,
  80 + var describe:String=""// 广告内容 ,
  81 + var fileSrc:String=""// 广告内容 ,
  82 + var url:String=""// 广告跳转链接 ,
  83 + var orderById:Int=0// 广告排序
  84 + init(j:JSON){
  85 + id = j["id"].intValue
  86 + location = j["location"].intValue
  87 + describe = j["describe"].stringValue
  88 + fileSrc = j["fileSrc"].stringValue
  89 + url = j["url"].stringValue
  90 + orderById = j["orderById"].intValue
  91 + }
  92 +
  93 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/main/JSViewController.swift
... ... @@ -76,7 +76,8 @@ class JSViewController: UIViewController,WKUIDelegate,WKScriptMessageHandler,UIA
76 76 self.view.insertSubview(loadingView, aboveSubview: progressView)
77 77 }
78 78 func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
79   - Debug.log("方法名:\(message.name),参数:\(message.body)")
  79 +
  80 + DebugLog( "方法名:\(message.name),参数:\(message.body)")
80 81 // 调用方法
81 82 if message.name == "setMenu" {
82 83 ary=[]
... ... @@ -114,7 +115,7 @@ class JSViewController: UIViewController,WKUIDelegate,WKScriptMessageHandler,UIA
114 115 if buttonIndex==i {
115 116 self.wkWebView.evaluateJavaScript(jsAry[i-1], completionHandler: { (data, error) in
116 117 if error != nil {
117   - print("错误:\(String(describing: error?.localizedDescription)))")
  118 + DebugLog( "错误:\(String(describing: error?.localizedDescription)))")
118 119 }
119 120 })
120 121 }
... ... @@ -125,7 +126,7 @@ class JSViewController: UIViewController,WKUIDelegate,WKScriptMessageHandler,UIA
125 126 if object as! WKWebView == self.wkWebView {
126 127 self.progressView.alpha=1.0
127 128 self.progressView.setProgress(Float(wkWebView.estimatedProgress), animated: true)
128   - Debug.log("+++++++++++++++++\(Float(wkWebView.estimatedProgress))")
  129 + DebugLog( "+++++++++++++++++\(Float(wkWebView.estimatedProgress))")
129 130 if wkWebView.estimatedProgress >= 1.0 {
130 131 UIView.animate(withDuration: 0.3, delay: 0.3, options: UIViewAnimationOptions.curveEaseIn, animations: {
131 132 self.progressView.alpha=0.0
... ...
ParentAssistant/ParentAssistant/Classes/controllers/main/TabBarController.swift
... ... @@ -78,14 +78,14 @@ extension TabBarController: URLSessionDelegate {
78 78 //认证服务器证书
79 79 if challenge.protectionSpace.authenticationMethod
80 80 == (NSURLAuthenticationMethodServerTrust) {
81   - print("服务端证书认证!")
  81 + DebugLog("服务器证书认证!")
82 82 completionHandler(.performDefaultHandling, nil)
83 83 }
84 84 //认证客户端证书
85 85 else if challenge.protectionSpace.authenticationMethod
86 86 == NSURLAuthenticationMethodClientCertificate
87 87 {
88   - print("客户端证书认证!")
  88 + DebugLog( "客户端证书认证!")
89 89 //获取客户端证书相关信息
90 90 let identityAndTrust:IdentityAndTrust = self.extractIdentity();
91 91  
... ... @@ -96,10 +96,9 @@ extension TabBarController: URLSessionDelegate {
96 96  
97 97 completionHandler(.useCredential, urlCredential);
98 98 }
99   -
100   - // 其它情况(不接受认证)
  99 + // 其它情况(不接受认证)
101 100 else {
102   - print("其它情况(不接受认证)")
  101 + DebugLog( "其他情况,不接受认证")
103 102 completionHandler(.cancelAuthenticationChallenge, nil);
104 103 }
105 104 }
... ...
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/CurrentInfoViewController.swift
... ... @@ -91,7 +91,7 @@ class CurrentInfoViewController: UIViewController,UIImagePickerControllerDelegat
91 91 }
92 92 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
93 93 picker.dismiss(animated: true, completion: { () -> Void in
94   - Debug.log("\(info)")
  94 + DebugLog( "\(info)")
95 95 let image=info[UIImagePickerControllerEditedImage] as! UIImage
96 96 let smallimage=scaleImage(image, toSize: CGSize(width: 256, height: 256))
97 97 let filePath=imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))
... ...
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/Login/RegisterViewController.swift
... ... @@ -60,7 +60,6 @@ class RegisterViewController: UITableViewController,UITextFieldDelegate {
60 60 let userInfo:NSDictionary=noti.userInfo! as NSDictionary
61 61 let endFrame=(userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
62 62  
63   - print(self.rootTableView.frame)
64 63 let y = navigationBarHeight! + statusBarHeight
65 64 if endFrame?.origin.y == getScreenHeight() {
66 65 UIView.animate(withDuration: 0.5) {
... ...
ParentAssistant/ParentAssistant/Classes/util/LocationManger.swift
... ... @@ -11,8 +11,15 @@ import CoreLocation
11 11  
12 12 class LocationManger: NSObject,CLLocationManagerDelegate {
13 13  
  14 + typealias BackCityBlock = (String)->()
  15 +
14 16 static let shared = LocationManger()
15   - required override init() {}
  17 + required override init() {
  18 +
  19 + }
  20 +
  21 + var block : BackCityBlock?
  22 +
16 23  
17 24 var locationManger = CLLocationManager()
18 25  
... ... @@ -41,8 +48,13 @@ class LocationManger: NSObject,CLLocationManagerDelegate {
41 48 if city == nil{
42 49 city = placeMark!.administrativeArea
43 50 }
  51 + if localAddress == "未知" {
  52 + if let add = city {
  53 + self.block!(add)
  54 + }
  55 + }
44 56 localAddress = city!
45   -
  57 +
46 58 }else if error == nil && arr == nil{
47 59  
48 60 }else if error == nil{
... ...
ParentAssistant/ParentAssistant/Classes/util/Macro.swift
... ... @@ -24,16 +24,31 @@ var localAddress = &quot;未知&quot;
24 24  
25 25  
26 26 //MARK: -------------------------- 接口地址 ----------------------------
  27 +
  28 +//var ReleaseHOST:String!="http://campus.myjxt.com"//正式网址
  29 +//var ReleaseHOSTWap:String!="http://parent.myjxt.com"
  30 +//var ReleaseHOSTImage:String!="http://manage.myjxt.com"
  31 +//var DebugHOST:String!="http://60.190.202.57:1000"//测试网址
  32 +//var DebugHOSTWap:String!="http://60.190.202.57:8101"
  33 +//var DebugHOSTImage:String!="http://60.190.202.57:8196"
  34 +//var HOST:String! = Debug.isFormal ? ReleaseHOST : DebugHOST
  35 +//var HOSTWAP:String! = Debug.isFormal ? ReleaseHOSTWap : DebugHOSTWap
  36 +//var HOSTImage:String! = Debug.isFormal ? ReleaseHOSTImage : DebugHOSTImage
  37 +
27 38 let appsecret="sincere:3a530f39f99411b454e667d69693c127"
28   -var ReleaseHOST:String!="http://campus.myjxt.com"//正式网址
29   -var ReleaseHOSTWap:String!="http://parent.myjxt.com"
30   -var ReleaseHOSTImage:String!="http://manage.myjxt.com"
31   -var DebugHOST:String!="http://60.190.202.57:1000"//测试网址
32   -var DebugHOSTWap:String!="http://60.190.202.57:8101"
33   -var DebugHOSTImage:String!="http://60.190.202.57:8196"
34   -var HOST:String! = Debug.isFormal ? ReleaseHOST : DebugHOST
35   -var HOSTWAP:String! = Debug.isFormal ? ReleaseHOSTWap : DebugHOSTWap
36   -var HOSTImage:String! = Debug.isFormal ? ReleaseHOSTImage : DebugHOSTImage
  39 +
  40 +#if DEBUG
  41 +//测试网址
  42 +var HOST:String! = "http://60.190.202.57:1000"
  43 +var HOSTWAP:String! = "http://60.190.202.57:8101"
  44 +var HOSTImage:String! = "http://60.190.202.57:8196"
  45 +#else
  46 +//正式网址
  47 +var HOST:String! = "http://campus.myjxt.com"
  48 +var HOSTWAP:String! = "http://parent.myjxt.com"
  49 +var HOSTImage:String! = "http://manage.myjxt.com"
  50 +#endif
  51 +
37 52  
38 53 let URL_UPLOAD_FILE=HOST+"/api/Class/UploadFile" //上传图片
39 54  
... ...
ParentAssistant/ParentAssistant/Classes/util/MessageManager.swift
... ... @@ -94,7 +94,8 @@ extension NSManagedObject {
94 94 //保存
95 95 do {
96 96 try context.save()
97   - print("保存成功!")
  97 +// print("保存成功!")
  98 + DebugLog( "保存成功!")
98 99 } catch {
99 100 fatalError("不能保存:\(error)")
100 101 }
... ...
ParentAssistant/ParentAssistant/Classes/util/utils.swift
... ... @@ -11,17 +11,21 @@ import QuickLook
11 11 import Photos
12 12  
13 13 //MARK: - 服务器和log打印设置
14   -class Debug{
15   - static let enable=false//是否打印log
16   - static let isFormal=false//是否是正式服务器
17   - class func log(_ msg:String){
18   - if(!Debug.enable){
19   - return
20   - }
21   - NSLog(msg)
22   - }
  14 +//class Debug{
  15 +// static let enable=false//是否打印log
  16 +// static let isFormal=false//是否是正式服务器
  17 +// class func log(_ msg:String){
  18 +// if(!Debug.enable){
  19 +// return
  20 +// }
  21 +// NSLog(msg)
  22 +// }
  23 +//}
  24 +func DebugLog<M>( _ message:M,file:String = #file,method:String = #function,line: Int = #line){
  25 + #if DEBUG
  26 + print("// DEBUG Log = \(method)[\(line)]:\(message)")
  27 + #endif
23 28 }
24   -
25 29 class Story{
26 30 static func getStory(_ name:String)->UIStoryboard?{
27 31 return UIStoryboard(name: name, bundle: nil);
... ... @@ -488,7 +492,8 @@ func cleanImageCache(){
488 492 for item in files{
489 493 do {
490 494 try fm.removeItem(atPath: (imagePath as NSString).appendingPathComponent(item))
491   - Debug.log("delete***************")
  495 +
  496 + DebugLog("delete***********")
492 497 } catch _ {
493 498 }
494 499 }
... ...
ParentAssistant/ParentAssistant/Classes/util/view/SearchBarView.swift 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +//
  2 +// SearchBarView.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/4/21.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +
  12 +
  13 +class SearchBarView: UIView,UISearchBarDelegate {
  14 +
  15 + enum SearchActionType {
  16 + case SearchType
  17 + case CancelType
  18 + }
  19 +
  20 + typealias SearchBarBlock = (String,SearchActionType)->()
  21 +
  22 + lazy var searchBar = {()->UISearchBar in
  23 + let search = UISearchBar.init(frame: CGRect.init(x: 0, y: 0, width: self.bounds.size.width, height: 36))
  24 + search.delegate = self
  25 + search.center = self.center
  26 + search.placeholder = "请输入搜索内容"
  27 + search.barStyle = .default
  28 + search.barTintColor = navigationColor
  29 +
  30 + return search
  31 + }()
  32 +
  33 + var block : SearchBarBlock?
  34 +
  35 + override init(frame: CGRect) {
  36 + super.init(frame: frame)
  37 + if !frame.isEmpty {
  38 + self.addSubview(self.searchBar)
  39 + }
  40 + }
  41 + //MARK: - SearchBarDelegate
  42 + func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
  43 + searchBar.showsCancelButton = false
  44 + }
  45 + func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
  46 + searchBar.showsCancelButton = true
  47 + }
  48 + func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
  49 + self.block!( "", .CancelType)
  50 + searchBar.resignFirstResponder()
  51 + }
  52 + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
  53 +
  54 + if let str = searchBar.text {
  55 + self.block!(str,.SearchType)
  56 + }
  57 + searchBar.resignFirstResponder()
  58 + }
  59 +
  60 + required init?(coder aDecoder: NSCoder) {
  61 + fatalError("init(coder:) has not been implemented")
  62 + }
  63 +}
... ...
ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard
... ... @@ -502,7 +502,7 @@
502 502 </viewController>
503 503 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
504 504 </objects>
505   - <point key="canvasLocation" x="1487" y="-1078"/>
  505 + <point key="canvasLocation" x="1785" y="-1072"/>
506 506 </scene>
507 507 <!--Tab Bar Controller-->
508 508 <scene sceneID="6yA-8W-l0b">
... ...
ParentAssistant/ParentAssistant/ViewController.swift
... ... @@ -12,7 +12,6 @@ class ViewController: UIViewController {
12 12  
13 13 override func viewDidLoad() {
14 14 super.viewDidLoad()
15   - print("123456")
16 15 self.view.makeToast("test")
17 16 self.view.makeToast("testParentAssistant", duration: 5, position: CSToastPositionCenter)
18 17 // Do any additional setup after loading the view, typically from a nib.
... ...