MessagePlanetNotiController.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // MessagePlanetNotiController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/6/11.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import Kingfisher
  9. class MessagePlanetNotiController: BaseViewController {
  10. override func didReceiveMemoryWarning() {
  11. super.didReceiveMemoryWarning()
  12. //KingfisherManager.shared.cache.clearDiskCache()
  13. KingfisherManager.shared.cache.clearMemoryCache()
  14. }
  15. var messageShowTypes : String = ""
  16. var cellHeightsDictionary = Dictionary<IndexPath, Any>()
  17. var messageDataModels : Array<MessageDataModel>?
  18. override func viewDidLoad() {
  19. super.viewDidLoad()
  20. setupViews()
  21. setupLayouts()
  22. setupData()
  23. }
  24. override func setupViews() {
  25. navigationBar.title = "由你通知"
  26. view.backgroundColor = kf7f8faColor
  27. view.addSubview(tableView)
  28. view.insertSubview(navigationBar, aboveSubview: tableView)
  29. }
  30. override func setupLayouts() {
  31. tableView.snp.makeConstraints { (make) in
  32. make.top.equalToSuperview().offset(kNavBarTotalHeight)
  33. make.left.right.bottom.equalTo(0)
  34. }
  35. }
  36. override func setupData() {
  37. tableView.addHeader(withBeginRefresh: true, animation: true) {
  38. [weak self] (page) in
  39. self?.userMemberMessageList(page: 1)
  40. }
  41. tableView.addAutoNormalFooter(withAutomaticallyRefresh: true, loadMoreBlock: {
  42. [weak self] (page) in
  43. self?.userMemberMessageList(page: page)
  44. })
  45. }
  46. lazy var tableView: UITableView = {
  47. let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.plain)
  48. tableView.separatorStyle = .none
  49. tableView.backgroundColor = kf7f8faColor
  50. tableView.dataSource = self
  51. tableView.delegate = self
  52. return tableView
  53. }()
  54. }
  55. extension MessagePlanetNotiController {
  56. /// 用户消息列表
  57. ///
  58. /// - Parameter page: 分页
  59. func userMemberMessageList(page:Int) {
  60. SwiftMoyaNetWorkServiceUser.shared().userMemberMessageListApi(messageShowTypes: self.messageShowTypes, page: page, completion: {
  61. [weak self] (messageListModel) -> (Void) in
  62. DIYEmptyView.emptyNoDataTableView(tableView: self?.tableView,imageStr: .ten,detailStr: .ten)
  63. let messageListModel = messageListModel as? MessageListModel
  64. if messageListModel?.pagination?.currentPage == 1{
  65. self?.messageDataModels?.removeAll()
  66. self?.tableView.resetNoMoreData()
  67. }
  68. self?.messageDataModels = (self?.messageDataModels ?? Array<MessageDataModel>()) + (messageListModel?.data ?? Array<MessageDataModel>())
  69. self?.tableView.reloadData()
  70. MJRefreshManager.mjRefreshManagerPaginationNoHiddenFooter(tableView: self?.tableView,pagination: messageListModel?.pagination)
  71. }) {
  72. [weak self] (loadingStatus) in
  73. MJRefreshManager.mjRefreshManagerLoadingStatus(tableView: self?.tableView,loadingStatus: loadingStatus)
  74. }
  75. }
  76. }
  77. // MARK: - tableView dataSource && delegate
  78. extension MessagePlanetNotiController: UITableViewDataSource, UITableViewDelegate {
  79. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  80. return messageDataModels?.count ?? 0
  81. }
  82. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  83. let cell = MessagePlanetNotiTableCell.cellWith(tableView: tableView, indexPath: indexPath)
  84. cell.messageDataModel = messageDataModels?[indexPath.row]
  85. return cell
  86. }
  87. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  88. return UITableView.automaticDimension
  89. }
  90. func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
  91. cellHeightsDictionary.updateValue(cell.frame.size.height, forKey: indexPath)
  92. }
  93. func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
  94. let height = cellHeightsDictionary[indexPath]
  95. if let height = height {
  96. return height as! CGFloat
  97. }
  98. return UITableView.automaticDimension
  99. }
  100. }