123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- //
- // SearchUserListViewController.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/6/19.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import JXSegmentedView
- import SwiftyMediator
- class SearchUserListViewController: BaseViewController {
-
- deinit {
- if observe != nil {
- NotificationCenter.default.removeObserver(observe!)
- }
- }
- weak var observe : NSObjectProtocol?
- var keyWord : String = ""
- var searchMemberModels = Array<SearchMemberModel>()
-
- override func viewDidLoad() {
- super.viewDidLoad()
- setupViews()
- setupLayouts()
- setupData()
- }
-
- override func setupViews() {
- navigationBar.isHidden = true
- view.backgroundColor = kf7f8faColor
- view.addSubview(tableView)
- }
-
- override func setupLayouts() {
- tableView.snp.makeConstraints { (make) in
- make.top.equalTo(5)
- make.left.equalTo(0)
- make.right.equalTo(0)
- make.bottom.equalTo(0)
- }
- }
- override func setupData() {
- tableView.addHeader(withBeginRefresh: true, animation: true) {
- [weak self] (page) in
- self?.userMemberSearchMemberApi(page: page)
- }
- tableView.addFooter(withAutomaticallyRefresh: false) {
- [weak self] (page) in
- self?.userMemberSearchMemberApi(page: page)
- }
-
- observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("followApi"), object: nil, queue: OperationQueue.main) { [weak self] (notification) in
- let followStatusModel = notification.object as? FollowStatusModel
-
- if !(self?.searchMemberModels.isEmpty ?? true) {
- for searchMemberModel in (self?.searchMemberModels)! {
- if searchMemberModel.uid == followStatusModel?.uid {
- searchMemberModel.followStatus = followStatusModel?.isFollowStatus
- }
- }
- self?.tableView.reloadData()
- }
- }
-
- }
-
- lazy var tableView: UITableView = {
- let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.plain)
- tableView.backgroundColor = UIColor.white
- tableView.separatorStyle = .none
- tableView.rowHeight = 81
- tableView.dataSource = self
- tableView.delegate = self
- return tableView
- }()
-
- }
- extension SearchUserListViewController {
-
- /// 搜索用户
- ///
- /// - Parameter page: 分页
- func userMemberSearchMemberApi(page:Int) {
- SwiftMoyaNetWorkServiceUser.shared().userMemberSearchMemberApi(userName: keyWord,page:page, completion: { [weak self] (searchMemberListModel) -> (Void) in
-
- DIYEmptyView.emptyNoDataActionTableView(tableView: self?.tableView, imageStr: .eight, detailStr: .eight, btnTitleStr: .five, btnClickBlock: {
- Mediator.push(CommunityRouterModuleType.pushFindFriends)
- })
- let searchMemberListModel = searchMemberListModel as? SearchMemberListModel
-
- if searchMemberListModel?.pagination?.currentPage ?? 1 <= searchMemberListModel?.pagination?.totalPages ?? 1 {
- if searchMemberListModel?.pagination?.currentPage == 1{
- self?.searchMemberModels.removeAll()
- self?.tableView.resetNoMoreData()
- }
- self?.searchMemberModels = (self?.searchMemberModels)! + (searchMemberListModel?.data)!
- self?.tableView.reloadData()
- MJRefreshManager.hiddenHeaderWithFooter(tableView: self?.tableView, currentPage: searchMemberListModel?.pagination?.currentPage, totalPages: searchMemberListModel?.pagination?.totalPages)
- }else {
- MJRefreshManager.hiddenFooterNoMoreData(tableView: self?.tableView)
- }
- }) {
- [weak self] (loadingStatus) in
- MJRefreshManager.hiddenHeaderWithFooterNONetWork(tableView: self?.tableView)
- }
- }
-
- /// 关注
- func userFollow(followUid:Int,completion: @escaping (Int) -> Void) {
- SwiftMoyaNetWorkServiceUser.shared().userFollowApi(followUid: followUid) {(followStatusModel) -> (Void) in
- let followStatusModel = followStatusModel as? FollowStatusModel
- completion(followStatusModel?.isFollowStatus ?? 0)
- }
- }
-
- /// 取消关注
- func userCancelFollow(followUid:Int,completion: @escaping (Int) -> Void) {
- SwiftMoyaNetWorkServiceUser.shared().userCancelFollowApi(followUid: followUid) {
- (followStatusModel) -> (Void) in
- let followStatusModel = followStatusModel as? FollowStatusModel
- completion(followStatusModel?.isFollowStatus ?? 0)
- }
- }
- }
- extension SearchUserListViewController :UITableViewDataSource,UITableViewDelegate {
-
-
- func numberOfSections(in tableView: UITableView) -> Int {
- return searchMemberModels.isEmpty ? 0 : 1
- }
-
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return searchMemberModels.isEmpty ? 0 : searchMemberModels.count
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = SearchUserLitTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
- cell.searchMemberModel = searchMemberModels[indexPath.row]
- cell.followButtonClosure = {
- [weak self] in
- if cell.searchMemberModel?.followStatus == 0 { //加关注
- self?.userFollow(followUid: cell.searchMemberModel?.uid ?? 0, completion: { (isFollow) -> Void in
- cell.searchMemberModel?.followStatus = isFollow
- self?.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
- })
- }else { //取消关注
- self?.userCancelFollow(followUid: cell.searchMemberModel?.uid ?? 0, completion: { (isFollow) -> Void in
- cell.searchMemberModel?.followStatus = isFollow
- self?.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
- })
- }
- }
- return cell
- }
-
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- let searchMemberModel = searchMemberModels[indexPath.row]
- NotificationCenter.default.post(name: NSNotification.Name("OtherPersonalCenter"), object: searchMemberModel.uid)
- }
- }
- extension SearchUserListViewController : JXSegmentedListContainerViewListDelegate {
- func listView() -> UIView {
- return view
- }
- }
|