//
|
// WorldCupContentVC.swift
|
// WanPai
|
//
|
// Created by 无故事王国 on 2024/2/26.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxRelay
|
import RxDataSources
|
import SnapKit
|
|
let WorldCupRefresh_Noti = Notification.Name.init("WorldCupRefresh_Noti")
|
|
class WorldCupContentViewModel:RefreshModel<WorldCupListModel>{
|
|
var studentID = BehaviorRelay<Int>(value:0)
|
var isStudent = BehaviorRelay<Int>(value:0)
|
var state = BehaviorRelay<Int>(value:0)
|
|
override func api() -> (Observable<BaseResponse<[WorldCupListModel]>>)? {
|
return Services.getMyWorldCupList(id: studentID.value, isStudent: isStudent.value, pageNo: page, state: state.value)
|
}
|
}
|
|
class WorldCupContentVC: BaseVC {
|
// var currentPartModel:ActivityDetailPartModel?
|
var partModel:BehaviorRelay<ActivityDetailPartModel?>?
|
var superScrollView:UIScrollView?
|
private var viewModel = WorldCupContentViewModel()
|
private(set) var tableView:BaseScrollInnerTableView!
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
view.backgroundColor = .clear
|
}
|
|
init(state:Int) {
|
super.init(nibName: nil, bundle: nil)
|
viewModel.state.accept(state)
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func setUI() {
|
tableView = BaseScrollInnerTableView(frame: .zero, style: .plain)
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
tableView.backgroundColor = .clear
|
tableView.register(UINib(nibName: "WorldCupTCell", bundle: nil), forCellReuseIdentifier: "_WorldCupTCell")
|
view.addSubview(tableView)
|
tableView.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
|
viewModel.configure(tableView)
|
|
superScrollView?.delegate = self
|
}
|
|
override func setRx() {
|
partModel?.subscribe(onNext: {[weak self] model in
|
if let m = model{
|
self?.viewModel.studentID.accept(m.id)
|
self?.viewModel.isStudent.accept(m.isStudent)
|
self?.viewModel.beginRefresh()
|
}
|
}).disposed(by: disposeBag)
|
|
NotificationCenter.default.rx.notification(WorldCupRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in
|
self?.viewModel.beginRefresh()
|
}).disposed(by: disposeBag)
|
}
|
}
|
|
extension WorldCupContentVC:UIScrollViewDelegate{
|
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
var canScroll = true
|
if scrollView.tag == 2100{
|
|
if scrollView.contentOffset.y < 350 && scrollView.contentOffset.y != 0{
|
canScroll = false
|
}
|
print("\(scrollView.contentOffset.y)----\(canScroll)")
|
tableView.isScrollEnabled = canScroll
|
}
|
}
|
}
|
|
extension WorldCupContentVC:UITableViewDelegate,UITableViewDataSource{
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
let model = viewModel.dataSource.value[indexPath.row]
|
let vc = WorldCupContentDetailVC(id: model.id)
|
push(vc: vc)
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return viewModel.dataSource.value.count
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let model = viewModel.dataSource.value[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_WorldCupTCell") as! WorldCupTCell
|
cell.backgroundColor = .clear
|
cell.setWorldCupListModel(model)
|
cell.label_state.text = viewModel.state.value == 2 ? "进行中":"未开始"
|
return cell
|
}
|
|
}
|
|
class BaseScrollInnerTableView:UITableView,UIScrollViewDelegate{
|
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
|
return true
|
}
|
}
|