From a0071c0c7726d3e6742bc7c4c30536302766626a Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期一, 17 七月 2023 18:28:24 +0800 Subject: [PATCH] 完善 --- WanPai/Root/Course/View/CityChooseSubTypeView.swift | 102 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 94 insertions(+), 8 deletions(-) diff --git a/WanPai/Root/Course/View/CityChooseSubTypeView.swift b/WanPai/Root/Course/View/CityChooseSubTypeView.swift index 364cbb5..0ce4493 100644 --- a/WanPai/Root/Course/View/CityChooseSubTypeView.swift +++ b/WanPai/Root/Course/View/CityChooseSubTypeView.swift @@ -1,29 +1,54 @@ -// -// CityChooseSubTypeView.swift -// WanPai -// -// Created by 杨锴 on 2023/6/13. -// + // + // CityChooseSubTypeView.swift + // WanPai + // + // Created by 杨锴 on 2023/6/13. + // import UIKit import JQTools +import RxSwift class CityChooseSubTypeView: UIView,JQNibView{ @IBOutlet weak var cons_viewHeight: NSLayoutConstraint! @IBOutlet weak var label_city: UILabel! + @IBOutlet weak var tableView: UITableView! private var closeClouse:(()->Void)? - private var clouse:((String)->Void)? + private var clouse:((CityProfileModel)->Void)? + private var disposeBag = DisposeBag() + private var datas = [CityProfileModel]() + private var dataDict = Dictionary<String,[CityProfileModel]>() + private var keys = [String]() override func awakeFromNib() { super.awakeFromNib() cons_viewHeight.constant = 100 alpha = 0 layoutIfNeeded() + tableView.delegate = self + tableView.dataSource = self + tableView.sectionIndexColor = Def_ThemeColor + tableView.register(UINib(nibName: "CommonSingleTCell", bundle: nil), forCellReuseIdentifier: "_CommonSingleTCell") startLocation() + Services.queryAllCity().subscribe(onNext: {[weak self] data in + if let models = data.data{ + self?.datas = models + for v in models{ + if let py = v.name.jq_getPinyin().first?.uppercased(){ + if self?.dataDict[py] == nil{ + self?.dataDict[py] = [CityProfileModel]() + } + self?.dataDict[py]?.append(v) + } + } + self?.keys = self?.dataDict.keys.sorted() ?? [] + self?.tableView.reloadData() + } + }).disposed(by: disposeBag) } @discardableResult - static func show(inView:UIView,afterView:UIView,clouse:@escaping (String)->Void,closeClouse:@escaping ()->Void)->CityChooseSubTypeView{ + static func show(inView:UIView,afterView:UIView,clouse:@escaping (CityProfileModel)->Void,closeClouse:@escaping ()->Void)->CityChooseSubTypeView{ let subTypeView = CityChooseSubTypeView.jq_loadNibView() subTypeView.closeClouse = closeClouse subTypeView.clouse = clouse @@ -71,3 +96,64 @@ startLocation() } } + +extension CityChooseSubTypeView:UITableViewDelegate{ + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let key = keys[indexPath.section] + let model = dataDict[key]![indexPath.row] + clouse!(model) + + self.cons_viewHeight.constant = 100 + UIView.animate(withDuration: 0.2) { + self.alpha = 0 + self.layoutIfNeeded() + } completion: { _ in + self.removeFromSuperview() + } + } + +} + +extension CityChooseSubTypeView:UITableViewDataSource{ + + func sectionIndexTitles(for tableView: UITableView) -> [String]? { + return keys + } + + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + return keys[section] + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + return 35 + } + + func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int { + + return index + } + + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 46 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "_CommonSingleTCell") as! CommonSingleTCell + if let model = dataDict[keys[indexPath.section]]?[indexPath.row]{ + cell.label_title.text = model.name + } + cell.img_select.isHidden = true + cell.view_container.borderColor = .clear + cell.view_container.backgroundColor = .white + return cell + } + + func numberOfSections(in tableView: UITableView) -> Int { + return keys.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataDict[keys[section]]?.count ?? 0 + } +} -- Gitblit v1.7.1