fix
无故事王国
2024-06-14 e2c245035a515bb7f623706b66f05e8dfc2c2fef
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
@@ -11,12 +11,13 @@
            private var viewModel = FightAnswerViewModel()
            private var listen4Model:Listen4Model!
            private var listenNewModel:ListenNewModel!
            private var page:Int!
            var rootViewModel:HomeListenFightViewModel!
            private var answerIndex:IndexPath? //答案的Index
            private var answerCount:Int = 0 //回答计数
            private var filterItems = [[Listen1SubModel]]() //此类型特殊,需要数据清理
            private lazy var stackView:UIStackView = {
                        let sta = UIStackView()
@@ -41,11 +42,15 @@
            private var voicePlayer = VoicePlayer.share()
            required init(page:Int,listen4Model:Listen4Model){
            required init(page:Int,listenNewModel:ListenNewModel){
                        super.init(nibName: nil, bundle: nil)
                        self.page = page
                        self.listen4Model = listen4Model
                        self.listen4Model.data.shuffle()
                        self.listenNewModel = listenNewModel
                        let temp1 = Array(listenNewModel.subjectList[page][0...1])
                        let temp2 = Array(listenNewModel.subjectList[page][2...3])
                        filterItems.append(temp1)
                        filterItems.append(temp2)
            }
            required init?(coder: NSCoder) {
@@ -102,7 +107,7 @@
            private func setAnswerStackView(){
                        guard viewModel.selectIndex.value != nil else{
                        guard let selectIndex = viewModel.selectIndex.value else{
                                    alertError(msg: "请先听题");return
                        }
@@ -118,10 +123,11 @@
                                    }
                        }
                        let answerModel = filterItems[selectIndex.section].filter({$0.isQuestion == 0}).first!
                        let answerId = answerModel.id
                        let answerId = listen4Model.data[viewModel.selectIndex.value!.section].subject
                        var tempVoiceArray = [String]()
                        for v in listen4Model.data[viewModel.selectIndex.value!.section].subjectList{
                        for v in filterItems[selectIndex.section]{
                                    if v.id == answerId{
                                                tempVoiceArray.append(v.correct)
                                                tempVoiceArray.append(v.error.components(separatedBy: ",").first ?? "")
@@ -152,6 +158,11 @@
            }
            @objc func answerAction(btn:UIButton){
                        guard let selectIndex = viewModel.selectIndex.value else{
                                    alertError(msg: "请先听题");return
                        }
                        var tempSubV:Lesson_4_AnswerView?
                        for subV in stackView.arrangedSubviews{
@@ -162,8 +173,9 @@
                        }
                        var answerModel:Listen1SubModel?
                        for (index,v) in (listen4Model.data[viewModel.selectIndex.value!.section].subjectList).enumerated(){
                                    if v.id == listen4Model.data[viewModel.selectIndex.value!.section].subject{
                        for (index,v) in filterItems[selectIndex.section].enumerated(){
                                    let m = filterItems[selectIndex.section].filter({$0.isQuestion == 0}).first
                                    if v.id == m?.id{
                                                answerModel = v
                                                answerIndex = IndexPath(row: index, section: viewModel.selectIndex.value!.section)
                                    }
@@ -174,6 +186,8 @@
                                    answerType = .success
                                    answerCount += 1
                                    rootViewModel.correctNum += 1
                                    let v = rootViewModel.answerCount.value + 1
                                    rootViewModel.answerCount.accept(v)
                        }else{
                                    answerType = .fail
                                    rootViewModel.errorNum += 1
@@ -209,7 +223,9 @@
                                                                                                //回答完成,下一答题
                                                                                                if self.answerCount == 2{
                                                                                                            self.rootViewModel.answerItems[self.page] = self.listen4Model
                                                                                                            let v = self.rootViewModel.answerCount.value + 1
                                                                                                            self.rootViewModel.answerCount.accept(v)
                                                                                                            self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
                                                                                                            self.voicePlayer.playerEnd()
                                                                                                            NotificationCenter.default.post(name: NextLession_Noti, object: nil)
                                                                                                            self.voicePlayer.playerEnd()
@@ -267,8 +283,7 @@
                                                weakSelf.setAnswerStackView()
                                    }
                        }
                        let m = listen4Model.data[indexPath.section].subjectList[indexPath.row]
                        let m = filterItems[indexPath.section][indexPath.row]
                        if indexPath == answerIndex{
                                    UIView.animate(withDuration: 0.4, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4,options: .layoutSubviews) {
                                                cell.img_state.alpha = 1
@@ -279,7 +294,7 @@
                                    cell.img_state.transform = .init(scaleX: 0.1, y: 0.1)
                        }
                        //问题
                        if listen4Model.data[indexPath.section].subject == m.id{
                        if filterItems[indexPath.section][indexPath.row].isQuestion == 0{
                                    cell.btn_handle.setImage(UIImage(named: "icon_question"), for: .normal)
                                    cell.view_handle.isHidden = true
                        }else{
@@ -296,11 +311,11 @@
            }
            func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                        return listen4Model.data[section].subjectList.count
                        return filterItems[section].count
            }
            func numberOfSections(in collectionView: UICollectionView) -> Int {
                        return listen4Model.data.count
                        return filterItems.count
            }
}