123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- //
- // MessageCommentController.swift
- // RainbowPlanet
- //
- // Created by Christopher on 2019/6/11.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import SwiftyMediator
- /// 消息列表类型
- ///
- /// - comment: 评论
- /// - praise: 赞
- /// - follow: 关注
- enum MessageListVCType {
- case comment
- case praise
- case follow
- }
- class MessageListController: BaseViewController {
-
- var messageShowTypes : String = ""
- var cellHeightsDictionary = Dictionary<IndexPath, Any>()
- var messageDataModels = Array<MessageDataModel>()
- var messageVCType : MessageListVCType?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- setupViews()
- setupData()
- }
-
- override func setupViews() {
- switch messageVCType {
- case .comment?:
- navigationBar.title = "评论与@"
- break
- case .praise?:
- navigationBar.title = "赞与互动"
- break
- case .follow?:
- navigationBar.title = "关注通知"
- break
- default:
- break
- }
- view.backgroundColor = kf7f8faColor
- view.addSubview(tableView)
- DIYEmptyView.emptyTableView(tableView: tableView)
-
- }
-
- override func setupData() {
- tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) {
- [weak self] (page) in
- self?.userMemberMessageList(page: page)
- }
- tableView.addFooterWithWithHeader(withAutomaticallyRefresh: false) {
- [weak self] (page) in
- self?.userMemberMessageList(page: page)
- }
- }
-
- lazy var tableView: UITableView = {
- let tableView = UITableView(frame: CGRect(x: 0, y: kNavBarTotalHeight, width: kScreenWidth, height: kScreenHeight-kNavBarTotalHeight), style: UITableView.Style.grouped)
- tableView.separatorStyle = .none
- tableView.backgroundColor = kf7f8faColor
- tableView.dataSource = self
- tableView.delegate = self
- return tableView
- }()
- }
- extension MessageListController {
-
- /// 用户消息列表
- ///
- /// - Parameter page: 分页
- func userMemberMessageList(page:Int) {
- SwiftMoyaNetWorkServiceUser.shared().userMemberMessageListApi(messageShowTypes: self.messageShowTypes, page: page) {
- [weak self] (messageListModel) -> (Void) in
- let messageListModel = messageListModel as? MessageListModel
- if messageListModel?.pagination?.currentPage ?? 1 <= messageListModel?.pagination?.totalPages ?? 1 {
- if messageListModel?.pagination?.currentPage == 1{
- self?.messageDataModels.removeAll()
- self?.tableView.resetNoMoreData()
- }
- self?.messageDataModels = (self?.messageDataModels)! + (messageListModel?.data!)!
- self?.tableView.reloadData()
- if self?.messageDataModels.count ?? 0 >= messageListModel?.pagination?.total ?? 0 {
- self?.tableView.endFooterNoMoreData()
- }
- }else {
- self?.tableView.endFooterNoMoreData()
- }
- }
- }
- }
- // MARK: - tableView dataSource && delegate
- extension MessageListController: UITableViewDataSource, UITableViewDelegate {
-
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return messageDataModels.isEmpty ? 0 : messageDataModels.count
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = MessageListTableCell.cellWith(tableView: tableView, indexPath: indexPath)
- cell.messageDataModel = messageDataModels[indexPath.row]
- return cell
- }
-
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- let messageDataModel = messageDataModels[indexPath.row]
- switch messageVCType {
- case .comment?,.praise?:
- if messageDataModel.param?.postTypeEnum == .video {
- Mediator.push(CommunityRouterModuleType.pushPostDetailVoide(postId: "\(messageDataModel.param?.postId ?? 0)", departType: .others))
- }else {
- Mediator.push(CommunityRouterModuleType.pushPostDetailContent(postId: "\(messageDataModel.param?.postId ?? 0)"))
- }
- break
- case .follow?:
- if messageDataModel.param?.uid != UserModel.shared().getModel()?.uid {
- let vc = OtherPersonalCenterViewController()
- vc.uid = messageDataModel.param?.uid ?? 0
- self.navigationController?.pushViewController(vc, animated: true)
- }
- break
- default:
- break
- }
- }
-
- 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
- }
-
- func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- return 10
- }
- func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
- let view = UIView()
- view.backgroundColor = kf7f8faColor
- return view
- }
-
- func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
- return 0
- }
- func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
- return nil
- }
-
- }
|