OOMeetingSelectedPersonController.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // OOMeetingSelectedPersonController.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2018/2/2.
  6. // Copyright © 2018年 zone. All rights reserved.
  7. //
  8. import UIKit
  9. private let personTableCell = "OOMeetingPersonTableViewCell"
  10. class OOMeetingSelectedPersonController: UITableViewController {
  11. var viewModel:OOMeetingCreateViewModel?
  12. //当前模式 0--正常 1--单选择 2--多选
  13. var currentMode:Int = 0 {
  14. didSet {
  15. }
  16. }
  17. var delegate:OOCommonBackResultDelegate?
  18. private var selectedPersons:[OOPersonModel] = []
  19. private var selectedCellIndexPaths:[IndexPath] = []
  20. var searchController:OOUISearchController!
  21. override func viewDidLoad() {
  22. super.viewDidLoad()
  23. //增加searchbar
  24. // searchController = OOUISearchController(searchResultsController: self)
  25. // searchController.searchResultsUpdater = self
  26. // tableView.tableHeaderView = searchController.searchBar
  27. tableView.register(UINib.init(nibName: "OOMeetingPersonTableViewCell", bundle: nil), forCellReuseIdentifier: personTableCell)
  28. if currentMode > 0 {
  29. self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "确定", style: .plain, target: self, action: #selector(selectSubmit(_:)))
  30. if currentMode == 1{
  31. tableView.allowsSelection = true
  32. }else if currentMode == 2 {
  33. tableView.allowsMultipleSelection = true
  34. }
  35. }
  36. tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
  37. self.viewModel?.getAllPerson(nil)
  38. })
  39. tableView.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock: {
  40. if let person = self.viewModel?.getLastPerson() {
  41. self.viewModel?.getAllPerson(person.id)
  42. }else{
  43. self.tableView.mj_header.endRefreshing()
  44. }
  45. })
  46. viewModel?.contactCallBlock = {
  47. msg in
  48. DispatchQueue.main.async {
  49. self.tableView.reloadData()
  50. if self.tableView.mj_header.isRefreshing(){
  51. self.tableView.mj_header.endRefreshing()
  52. }
  53. if self.tableView.mj_footer.isRefreshing() {
  54. self.tableView.mj_footer.endRefreshing()
  55. }
  56. }
  57. }
  58. viewModel?.getAllPerson(nil)
  59. }
  60. @objc func selectSubmit(_ sender:Any) {
  61. guard let block = delegate else {
  62. return
  63. }
  64. block.backResult("showPersonSelectedSegue", selectedPersons)
  65. self.dismiss(animated: true, completion: nil)
  66. }
  67. override func didReceiveMemoryWarning() {
  68. super.didReceiveMemoryWarning()
  69. // Dispose of any resources that can be recreated.
  70. }
  71. // MARK: - Table view data source
  72. override func numberOfSections(in tableView: UITableView) -> Int {
  73. // #warning Incomplete implementation, return the number of sections
  74. return (viewModel?.tableViewNumberOfSections())!
  75. }
  76. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  77. return (viewModel?.tableViewNumberOfRowsInSection(section))!
  78. }
  79. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  80. let cell = tableView.dequeueReusableCell(withIdentifier: personTableCell, for: indexPath)
  81. let item = viewModel?.tableViewNodeForIndexPath(indexPath)
  82. let uCell = cell as! (OOMeetingPersonTableViewCell & Configurable)
  83. uCell.viewModel = self.viewModel
  84. uCell.config(withItem: item)
  85. return cell
  86. }
  87. override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  88. if currentMode > 0 {
  89. let item = viewModel?.tableViewNodeForIndexPath(indexPath)
  90. self.selectedCellIndexPaths.append(indexPath)
  91. self.selectedPersons.append(item!)
  92. }
  93. }
  94. override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
  95. if currentMode > 0 {
  96. let item = viewModel?.tableViewNodeForIndexPath(indexPath)
  97. self.selectedCellIndexPaths.remove(at: self.selectedCellIndexPaths.index(of: indexPath)!)
  98. self.selectedPersons.remove(at: self.selectedPersons.index(of: item!)!)
  99. }
  100. }
  101. }
  102. extension OOMeetingSelectedPersonController:UISearchResultsUpdating {
  103. func updateSearchResults(for searchController: UISearchController) {
  104. }
  105. }