fix
无故事王国
2024-06-06 6f7f02d5c8880ff670b2c694fe61f5af5a6e3e36
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
@@ -12,6 +12,11 @@
            private var viewModel = FightAnswerViewModel()
            private var listen1Model:Listen1Model!
            private var randomElement:Listen1SubModel?
            private var page:Int!
            var rootViewModel:HomeListenFightViewModel!
            private lazy var stackView:UIStackView = {
                        let stackView = UIStackView()
                        stackView.spacing = 78
@@ -31,14 +36,27 @@
                        return collection
            }()
            required init(page:Int,listen1Model:Listen1Model){
                        super.init(nibName: nil, bundle: nil)
                        self.page = page
                        self.listen1Model = listen1Model
            }
            required init?(coder: NSCoder) {
                        fatalError("init(coder:) has not been implemented")
            }
            override func viewDidLoad() {
                        super.viewDidLoad()
                        navigationItem.titleView = UIView()
                        viewModel.selectIndex.accept(IndexPath(row: 0, section: 0))
            }
            override func setUI() {
                        super.setUI()
                        viewModel.selectIndex.accept(IndexPath(row: 0, section: 0))
                        collectionView.delegate = self
                        collectionView.dataSource = self
@@ -59,18 +77,52 @@
                                    make.width.greaterThanOrEqualTo(100)
                        }
                        addStackView()
                        VoicePlayer.share().playEnd {[weak self] in
                        }
            }
            private func addStackView(){
                        stackView.removeArrangedSubviews()
                        var tempViews = [StudyHandleView]()
                        for index in 0...2{
                                    let handleView = StudyHandleView.jq_loadNibView()
                                    handleView.listenType = .lesson2
                                    handleView.btn_choose.tag = 10 + index
                                    let row = viewModel.selectIndex.value!.row
                                    let model = listen1Model.subjectList[row]
                                    if index == 0{
                                                handleView.vioceSoundUrl = model.correct
                                    }
                                    if index == 1{
                                                handleView.vioceSoundUrl = model.error.components(separatedBy: ",").first
                                    }
                                    if index == 2{
                                                handleView.vioceSoundUrl = model.error.components(separatedBy: ",").last
                                    }
                                    handleView.chooseClouse {[weak self] btn in
                                                guard let weakSelf = self else { return }
                                                let row = weakSelf.viewModel.selectIndex.value!.row
                                                var lessionType:Fight_lessonType = .none
                                                lessionType = .success
                                                if handleView.vioceSoundUrl == weakSelf.listen1Model.subjectList[row].correct{
                                                            lessionType = .success
                                                }else{
                                                            lessionType = .fail
                                                }
                                                switch lessionType {
                                                            case .success:
                                                                        weakSelf.rootViewModel.correctNum += 1
                                                                        handleView.btn_choose.isEnabled = false
                                                                        handleView.btn_state.setImage(UIImage(named: "icon_success_small"), for: .normal)
                                                                        UIView.animate(withDuration: 0.5) {
@@ -82,6 +134,7 @@
                                                                                    self?.answerSuccess(cell,index: index)
                                                                        }
                                                            case .fail:
                                                                        weakSelf.rootViewModel.errorNum += 1
                                                                        handleView.btn_state.setImage(UIImage(named: "icon_waring_small"), for: .normal)
                                                                        UIView.animate(withDuration: 0.5) {
                                                                                    handleView.btn_state.alpha = 1
@@ -97,9 +150,11 @@
                                                make.height.equalTo(52)
                                                make.width.greaterThanOrEqualTo(159)
                                    }
                                    stackView.addArrangedSubview(handleView)
                                    tempViews.append(handleView)
                        }
                        tempViews.shuffle() //乱序
                        stackView.addArrangedSubviews(tempViews)
            }
            private func answerSuccess(_ cell:ListenFight_lesson_1_CCell,index:Int){
@@ -135,43 +190,40 @@
                                    self.view.layoutIfNeeded()
                        }completion: { _ in
                                    self.resetStackView()
                        }
            }
            private func resetStackView(){
                        for v in stackView.arrangedSubviews as! [StudyHandleView]{
                                    v.view_choose.alpha = 0
                                    v.btn_choose.isEnabled = true
                                    v.btn_choose.isSelected = false
                                    v.btn_state.setImage(nil, for: .normal)
                        }
                        let newRow = viewModel.selectIndex.value!.row+1
                        viewModel.selectIndex.accept(IndexPath(row: newRow, section: 0))
                        collectionView.reloadData()
                        if newRow == 4{
                                    NotificationCenter.default.post(name: NextLession_Noti, object: nil)
                                    rootViewModel.answerItems[page] = listen1Model
                                    NotificationCenter.default.post(name: NextLession_Noti, object: nil);return
                        }
                        addStackView()
            }
            override func setRx() {
                        viewModel.selectIndex.subscribe(onNext: {[weak self] index in
                                    guard let index = index else { return }
                                    //判断选中是否正确逻辑
                                    if let cell = self?.collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: index) as? ListenFight_lesson_1_CCell{
                                                var answerType:Fight_lessonType = .none
                                                answerType = .success
                                                switch answerType {
                                                            case .success:
                                                                        self?.viewModel.answerType.accept(.success)
                                                            case .fail:
                                                                        self?.viewModel.answerType.accept(.fail)
                                                            default:break
                                                }
                                    }
                        }).disposed(by: disposeBag)
//                        viewModel.selectIndex.subscribe(onNext: {[weak self] index in
//                                    guard let index = index else { return }
//                                    //判断选中是否正确逻辑
//                                    if self?.collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: index) is ListenFight_lesson_1_CCell{
//                                                var answerType:Fight_lessonType = .none
//                                                answerType = .success
//                                                switch answerType {
//                                                            case .success:
//                                                                        self?.viewModel.answerType.accept(.success)
//                                                                        self?.rootViewModel.correctNum += 1
//                                                            case .fail:
//                                                                        self?.viewModel.answerType.accept(.fail)
//                                                                        self?.rootViewModel.errorNum += 1
//                                                            default:break
//                                                }
//                                    }
//                        }).disposed(by: disposeBag)
            }
}
@@ -186,10 +238,17 @@
                        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: indexPath) as! ListenFight_lesson_1_CCell
                        cell.jq_addShadows(shadowColor: .black.withAlphaComponent(0.31), corner: 5, radius: 5, offset: CGSize(width: 0, height: 1), opacity: 1)
                        cell.backgroundColor = .white
                        if viewModel.selectIndex.value?.row == indexPath.row{
                                    cell.label_title.isHidden = false
                        }else{
                                    cell.label_title.isHidden = true
                        }
                        cell.setListen1SubModel(listen1Model.subjectList[indexPath.row])
                        cell.label_title.text = listen1Model.subjectList[indexPath.row].name
                        return cell
            }
            func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                        return 4
                        return min(4,listen1Model.subjectList.count)
            }
}