// // MessagePlanetNotiController.swift // RainbowPlanet // // Created by Christopher on 2019/6/11. // Copyright © 2019 RainbowPlanet. All rights reserved. // import Kingfisher class MessagePlanetNotiController: BaseViewController { override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() //KingfisherManager.shared.cache.clearDiskCache() KingfisherManager.shared.cache.clearMemoryCache() } var messageShowTypes : String = "" var cellHeightsDictionary = Dictionary() var messageDataModels : Array? override func viewDidLoad() { super.viewDidLoad() setupViews() setupLayouts() setupData() } override func setupViews() { navigationBar.title = "由你通知" view.backgroundColor = kf7f8faColor view.addSubview(tableView) view.insertSubview(navigationBar, aboveSubview: tableView) } override func setupLayouts() { tableView.snp.makeConstraints { (make) in make.top.equalToSuperview().offset(kNavBarTotalHeight) make.left.right.bottom.equalTo(0) } } override func setupData() { tableView.addHeader(withBeginRefresh: true, animation: true) { [weak self] (page) in self?.userMemberMessageList(page: 1) } tableView.addAutoNormalFooter(withAutomaticallyRefresh: true, loadMoreBlock: { [weak self] (page) in self?.userMemberMessageList(page: page) }) } lazy var tableView: UITableView = { let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.plain) tableView.separatorStyle = .none tableView.backgroundColor = kf7f8faColor tableView.dataSource = self tableView.delegate = self return tableView }() } extension MessagePlanetNotiController { /// 用户消息列表 /// /// - Parameter page: 分页 func userMemberMessageList(page:Int) { SwiftMoyaNetWorkServiceUser.shared().userMemberMessageListApi(messageShowTypes: self.messageShowTypes, page: page, completion: { [weak self] (messageListModel) -> (Void) in DIYEmptyView.emptyNoDataTableView(tableView: self?.tableView,imageStr: .ten,detailStr: .ten) let messageListModel = messageListModel as? MessageListModel if messageListModel?.pagination?.currentPage == 1{ self?.messageDataModels?.removeAll() self?.tableView.resetNoMoreData() } self?.messageDataModels = (self?.messageDataModels ?? Array()) + (messageListModel?.data ?? Array()) self?.tableView.reloadData() MJRefreshManager.mjRefreshManagerPaginationNoHiddenFooter(tableView: self?.tableView,pagination: messageListModel?.pagination) }) { [weak self] (loadingStatus) in MJRefreshManager.mjRefreshManagerLoadingStatus(tableView: self?.tableView,loadingStatus: loadingStatus) } } } // MARK: - tableView dataSource && delegate extension MessagePlanetNotiController: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return messageDataModels?.count ?? 0 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = MessagePlanetNotiTableCell.cellWith(tableView: tableView, indexPath: indexPath) cell.messageDataModel = messageDataModels?[indexPath.row] return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension } func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { cellHeightsDictionary.updateValue(cell.frame.size.height, forKey: indexPath) } func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { let height = cellHeightsDictionary[indexPath] if let height = height { return height as! CGFloat } return UITableView.automaticDimension } }