// // MeTraineeListViewController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/13. // import UIKit import RxSwift import RxCocoa enum TraineeType { case advancet case official case none } final class MeTraineeListViewController: BaseViewController { private struct Metric { static let statusBarHeight = isIphoneX ? 44.f : 20.f static let navBarHeight = 44.f } // MARK: 私有属性 private var menuTitles : [String] = ["科一", "科二", "科三", "科四", "毕业"] private var idxs: [UInt] = [] private var menuItemCurrentBtn : UIButton? var schoolId:Int = 0 var type:TraineeType? // MARK: UI let let statusBar = UIView().then { $0.backgroundColor = UIColor.db_theme } let navBar = MeTraineeNavBar.loadFromNib() let pageController = VTMagicController().then { $0.view.translatesAutoresizingMaskIntoConstraints = false $0.magicView.navigationColor = .db_theme_L2 $0.magicView.sliderColor = .db_sliderColor $0.magicView.switchStyle = .default $0.magicView.layoutStyle = .divide $0.magicView.navigationHeight = 57.f // $0.magicView.sliderExtension = -10 $0.magicView.sliderWidth = 22.f $0.magicView.sliderOffset = -8 $0.magicView.sliderHeight = 4 $0.magicView.isSeparatorHidden = false $0.magicView.bubbleRadius = 2 $0.magicView.needPreloading = true $0.magicView.separatorHeight = 0 //下划线h } override func setupConstraints() { statusBar.snp.makeConstraints { (make) in make.left.right.top.equalToSuperview() make.height.equalTo(Metric.statusBarHeight) } navBar.snp.remakeConstraints { (make) in make.left.right.equalToSuperview() make.height.equalTo(Metric.navBarHeight) make.top.equalTo(statusBar.snp.bottom) } pageController.view.snp.makeConstraints { (make) in make.left.right.bottom.equalToSuperview() make.top.equalTo(navBar.snp.bottom) } } func scrollViewDidScroll(_ scrollView: UIScrollView) { } // MARK: StatusBar override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(true, animated: true) } init(type:TraineeType) { self.type = type super.init() switch type { case .advancet: self.navBar.title_label.text = "我的学员-预报名" self.title = "预报名学员" self.tabBarItem.image = NYImage.TabBar.advancet self.tabBarItem.selectedImage = NYImage.TabBar.advancet_s?.withRenderingMode(.alwaysOriginal) return case .official: self.navBar.title_label.text = "我的学员-正式" self.title = "正式学员" self.tabBarItem.image = NYImage.TabBar.official self.tabBarItem.selectedImage = NYImage.TabBar.official_s?.withRenderingMode(.alwaysOriginal) return case .none: return } } required convenience init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() setupUI() configureMagicController() } // MARK: 私有方法 func setupUI(){ self.view.backgroundColor = .db_theme self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside) self.navBar.search_button.addTarget(self, action: #selector(jumpSearchdo), for: .touchUpInside) // self.navBar.search_button.rx.tap.subscribe ({ [unowned self] (_) in // self.jumpSearch() // }).disposed(by: self.disposeBag) } func configureMagicController(){ self.view.addSubview(navBar) self.view.addSubview(statusBar) self.addChild(pageController) self.view.addSubview(pageController.view) //设置VTMagicController代理,初始页码 pageController.magicView.delegate = self pageController.magicView.dataSource = self pageController.magicView.reloadData(toPage: 0) } @objc func jumpSearchdo(_ sender: Any){ NYSwRouter.push(NYSwPushType.trainee_search.path) } } //VTMagicViewDelegate view代理 extension MeTraineeListViewController : VTMagicViewDelegate { func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) { var menuItem = magicView.menuItem(at: itemIndex) if (menuItemCurrentBtn != nil) { menuItemCurrentBtn?.titleLabel?.font = NYFont.SysFont.sys_15 menuItemCurrentBtn?.qmui_badgeLabel?.isHidden = true } menuItemCurrentBtn = menuItem menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) menuItem?.qmui_badgeLabel?.isHidden = false guard let currentVc:MeTraineeSubjectPageViewController = pageController.currentViewController as? MeTraineeSubjectPageViewController else { return } // if (currentVc.traineeDataModel != nil) { // menuItem?.qmui_badgeInteger = UInt(currentVc.traineeDataModel?.total ?? 0) // } if itemIndex == 0 || itemIndex == 1 { let currentPage = pageController.currentPage if currentPage == itemIndex { // TogetherDataManager.refreshDataForVTMagic(currentVc,true) } } } func magicView(_ magicView: VTMagicView, viewDidAppear viewController: UIViewController, atPage pageIndex: UInt) { if pageIndex == 0 || pageIndex == 1 { var canRefresh: Bool = false if let collectionVc = viewController as? BaseCollectionViewController { if collectionVc.totalItems() > 0 { canRefresh = true } } if idxs.contains(pageIndex) || canRefresh { // TogetherDataManager.refreshDataForVTMagic(viewController, false) } } } func magicView(_ magicView: VTMagicView, viewDidDisappear viewController: UIViewController, atPage pageIndex: UInt) { if pageIndex == 0 || pageIndex == 1 { if !idxs.contains(pageIndex) { idxs.append(pageIndex) } } if pageIndex == 1 { // TogetherDataManager.referenceDate = Date() } } } //VTMagicViewDataSource 数据源代理 extension MeTraineeListViewController : VTMagicViewDataSource{ func menuTitles(for magicView: VTMagicView) -> [String] { return menuTitles } func magicView(_ magicView: VTMagicView, menuItemAt itemIndex: UInt) -> UIButton { var menuItem = magicView.dequeueReusableItem(withIdentifier: "homeItemIdentifier") if menuItem == nil { menuItem = QMUIButton(type: .custom) menuItem?.setTitleColor(.db_fontGray, for: .normal) menuItem?.setTitleColor(.db_fontSelColor, for: .selected) menuItem?.titleLabel?.font = NYFont.SysFont.sys_15 if itemIndex==0 { menuItemCurrentBtn = menuItem menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) } menuItem?.qmui_badgeBackgroundColor = UIColor("#F84444") menuItem?.qmui_badgeTextColor = UIColor.white menuItem?.qmui_badgeInteger = 50 menuItem?.qmui_badgeLabel?.isHidden = true menuItem?.qmui_badgeFont = NYFont.SysFont.sys_10 menuItem?.qmui_badgeOffset = CGPoint(x: -35, y: 26) menuItem?.qmui_badgeContentEdgeInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2) } return menuItem ?? UIButton() } func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController { if pageIndex == 0 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController01") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "1",schoolId: schoolId) } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 1 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController02") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "2",schoolId: schoolId) } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 2 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController03") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "3",schoolId: schoolId) } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 3{ var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController04") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "4",schoolId: schoolId) } return meTraineeSubjectPageViewController ?? UIViewController() } else { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController05") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "5",schoolId: schoolId) } return meTraineeSubjectPageViewController ?? UIViewController() } } }