// // MeTraineeSearchPageViewController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/15. // import UIKit import RxSwift import RxCocoa final class MeTraineeSearchPageViewController: BaseTableViewController { let cellIdentifier:String = "_MeTraineeSubjectCellSearch" // MARK: UI属性 @IBOutlet weak var searchView: UIView! //搜索 @IBOutlet weak var search_textfield: QMUITextField! //搜按钮 @IBOutlet weak var search_button: UIButton! //title @IBOutlet weak var title_label: UILabel! let meTraineeSearchViewModel = MeTraineeSearchViewModel() let headerView = MeTraineeSubjectHeaderView.loadFromNib() var schoolId:Int = 0 var appCoachId = "" var coachId = "" var type:Int = 0 //重置约束 override func setupConstraints() { self.tableView.snp.remakeConstraints { make in make.top.equalTo(self.searchView.snp.bottom) make.left.right.bottom.equalTo(self.view) } self.loadViewIfNeeded() } override func viewDidLoad() { super.viewDidLoad() meTraineeSearchViewModel.appCoachId = appCoachId meTraineeSearchViewModel.schoolId = schoolId meTraineeSearchViewModel.coachId = coachId setupUI() biandView() } // MARK: 私有方法 func setupUI(){ switch type { case 0://我的学员 title_label.text = "我的学员" break case 1://在校学员 title_label.text = "在校学员" break case 2://绑定学员 title_label.text = "绑定学员" break default: title_label.text = "我的学员" } if isIphoneX {self.nav_topH_layout.constant = 64.f+24.f} self.view.backgroundColor = .db_theme // self.searchView.addSubview(search_bar) self.search_textfield.placeholderColor = .db_place tableView.dataSource = self tableView.delegate = self tableView.separatorStyle = .none //去除分割线 tableView.register(UINib(nibName: "MeTraineeSubjectCell", bundle: nil), forCellReuseIdentifier: cellIdentifier) tableView.rowHeight = 288.f setupRefreshHeader(tableView) {[unowned self] in DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { // 在延迟 1 秒后执行的代码 self.stopRefresh() } NSLog("AAAAAAA") } // 设置上拉加载更多 tableView.es.addInfiniteScrolling { [unowned self] in self.meTraineeSearchViewModel.getLoadMore(vc: self) } self.isEmptyDisplay = true } //绑定-rx func biandView(){ // search_textfield.rx.text // .debounce(.milliseconds(300), scheduler: MainScheduler.instance) // 添加节流防抖,减少频繁查询 // .distinctUntilChanged() // 确保只有文本内容发生变化时才触发查询 // .subscribe(onNext: { [unowned self] query in // guard let query = query else { return } // // 在这里处理查询操作,比如发送网络请求或对本地数据进行过滤 // self.meTraineeSearchViewModel.searchCoachInfoList(vc: self) // print("Query: \(query)") // // 每当输入文本发生变化,都会在这里触发查询 // }) // .disposed(by: disposeBag) search_textfield.rx.controlEvent(.editingDidEndOnExit) .subscribe(onNext: { [weak self] in self?.handleSearch() }) .disposed(by: disposeBag) // tableView点击事件 tableView.rx.itemSelected.subscribe(onNext: { [weak self]indexPath in print("点击\(indexPath)行") let rowInfo:RowInfo = (self!.meTraineeSearchViewModel.traineeDataModel?.rows![indexPath.row])! if rowInfo != nil && rowInfo.bmType == "2" { let context: Int = rowInfo.id! NYSwRouter.push(NYSwPushType.trainee_info,context: context) } self?.tableView.deselectRow(at: indexPath, animated: false) }).disposed(by: disposeBag) } //处理搜索 func handleSearch() { // 在这里处理搜索事件 if let query = search_textfield.text, !query.isEmpty { print("Search query: \(query)") // 在这里执行搜索操作,比如发送网络请求或对本地数据进行过滤 self.meTraineeSearchViewModel.searchCoachInfoList(vc: self) search_textfield.resignFirstResponder() // 隐藏键盘 } } } //数据源 extension MeTraineeSearchPageViewController:UITableViewDataSource { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { if self.meTraineeSearchViewModel.traineeDataModel != nil { let total = String(format: "%d", self.meTraineeSearchViewModel.traineeDataModel?.total ?? 0) headerView.total_label.text = "总数:"+total } return headerView } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 55.f } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.meTraineeSearchViewModel.rows.count ?? 0 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! MeTraineeSubjectCell cell.index_button.setTitle("\(indexPath.row+1)", for: .normal) cell.setRowInfo(rowInfo: self.meTraineeSearchViewModel.rows[indexPath.row]) return cell } } //事件 extension MeTraineeSearchPageViewController:UITableViewDelegate { }