// // SPMineViewController.swift // Thimra // // Created by 曾觉新 on 2025/4/10. // import UIKit class SPMineViewController: SPViewController { private lazy var dataArr: [SPMineItem] = { let arr = [ // SPMineItem(type: .language, iconImage: UIImage(named: "language_icon_01"), title: "Language".localized), SPMineItem(type: .feedBack, iconImage: UIImage(named: "feed_back_icon_01"), title: "FeedBack".localized), SPMineItem(type: .privacyPolicy, iconImage: UIImage(named: "privacy_policy_icon_01"), title: "Privacy Policy".localized), SPMineItem(type: .userAgreement, iconImage: UIImage(named: "user_agreement_icon_01"), title: "User Agreement".localized), SPMineItem(type: .aboutUs, iconImage: UIImage(named: "about_us_icon_01"), title: "About Us".localized), ] return arr }() ///是否进入过 private var isHaveEntered = false //MARK: UI 属性 private lazy var headerView: SPMineHeaderView = { let view = SPMineHeaderView() view.frame = CGRect(x: 0, y: 0, width: kSPScreenWidth, height: view.contentHeight) return view }() private lazy var tableView: SPTableView = { let tableView = SPTableView(frame: .zero, style: .plain) tableView.delegate = self tableView.dataSource = self tableView.rowHeight = 50 SPMineCell.registerCell(tableView: tableView) return tableView }() override func viewDidLoad() { super.viewDidLoad() setBackgroundView(isShowGradient: false) requestData() _setupUI() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(true, animated: true) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if isHaveEntered { requestData() } isHaveEntered = true } private func updateHeaderView() { tableView.tableHeaderView = nil self.headerView.height = self.headerView.contentHeight tableView.tableHeaderView = headerView } } extension SPMineViewController { private func _setupUI() { tableView.tableHeaderView = self.headerView view.addSubview(tableView) tableView.snp.makeConstraints { make in make.edges.equalToSuperview() } } } //MARK: -------------- UITableViewDelegate & UITableViewDataSource -------------- extension SPMineViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = SPMineCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath) cell.item = dataArr[indexPath.row] return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return dataArr.count } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let item = dataArr[indexPath.row] switch item.type { case .privacyPolicy: let vc = SPWebViewController() vc.urlStr = SPPrivacyPolicyWebUrl self.navigationController?.pushViewController(vc, animated: true) case .userAgreement: let vc = SPWebViewController() vc.urlStr = SPUserAgreementWebUrl self.navigationController?.pushViewController(vc, animated: true) case .aboutUs: let vc = SPAboutUsViewController() self.navigationController?.pushViewController(vc, animated: true) case .feedBack: let vc = SPWebViewController() vc.urlStr = SPFeedBackHomeWebUrl self.navigationController?.pushViewController(vc, animated: true) default: break } } } extension SPMineViewController { private func requestData() { requestUserInfo() requestPlayHistoryList() } ///获取用户信息 private func requestUserInfo() { SPUserAPI.requestUserInfo { [weak self] userInfo in guard let self = self else { return } if let userInfo = userInfo { self.headerView.userInfo = userInfo } } } ///获取播放记录 private func requestPlayHistoryList() { SPVideoAPI.requestPlayHistoryList(page: 1, pageSize: 3) { [weak self] listModel in guard let self = self else { return } if let list = listModel?.list { self.headerView.playHistoryArr = list self.updateHeaderView() } } } }