fix
无故事王国
2024-06-13 7c7bb620c2670e316617273ffabe9f690f989ad0
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
@@ -12,14 +12,18 @@
            private var viewModel = FightAnswerViewModel()
            private var listen1Model:Listen1Model!
            private var randomElement:Listen1SubModel?
            private var listenNewModel:ListenNewModel!
//            private var randomElement:Listen1SubModel?
            private var page:Int!
            var rootViewModel:HomeListenFightViewModel!
            private var tempViews = [StudyHandleView]()
            private var playedIndex = Set<Int>() //已经播放过的view
            private var voicePlayer = VoicePlayer.share()
            private var isAnsterModel = Set<Listen1SubModel>()
//            private var isAnsterComplete:Bool = false //是否已经回答完成[小题]
//            private var isAnsterDone:Bool = false //是否已经回答完成[大题]
            private lazy var stackView:UIStackView = {
                        let stackView = UIStackView()
@@ -41,11 +45,10 @@
            }()
            required init(page:Int,listen1Model:Listen1Model){
            required init(page:Int,listenNewModel:ListenNewModel){
                        super.init(nibName: nil, bundle: nil)
                        self.page = page
                        self.listen1Model = listen1Model
                        self.listen1Model.subjectList.shuffle()
                        self.listenNewModel = listenNewModel
            }
            
            required init?(coder: NSCoder) {
@@ -117,6 +120,8 @@
            private func addStackView(){
//                        getNextAnswer()
                        for subV in stackView.arrangedSubviews{
                                    subV.removeFromSuperview()
                        }
@@ -130,7 +135,7 @@
                                    handleView.tag = 20 + index
                                    let row = viewModel.selectIndex.value!.row
                                    let model = listen1Model.subjectList[row]
                                    let model = listenNewModel.subjectList[page][row]
                                    if index == 0{
                                                handleView.vioceSoundUrl = model.correct
@@ -148,12 +153,12 @@
                                                self?.playedIndex.insert(index)
                                    }
                                    handleView.chooseClouse {[weak self] btn in
                                                guard let weakSelf = self else { return }
                                                let row = weakSelf.viewModel.selectIndex.value!.row
                                                handleView.view_choose.alpha = 1
                                                var lessionType:Fight_lessonType = .none
                                                if handleView.vioceSoundUrl == weakSelf.listen1Model.subjectList[row].correct{
                                                if handleView.vioceSoundUrl == weakSelf.listenNewModel.subjectList[weakSelf.page][row].correct{
                                                            lessionType = .success
                                                                        weakSelf.voicePlayer.playerEnd()
                                                }else{
@@ -162,6 +167,7 @@
                                                switch lessionType {
                                                            case .success:
//                                                                        weakSelf.isAnsterComplete = true
                                                                        weakSelf.rootViewModel.correctNum += 1
                                                                        handleView.btn_choose.isEnabled = false
                                                                        handleView.btn_state.setImage(UIImage(named: "icon_success_small"), for: .normal)
@@ -212,7 +218,7 @@
                        //copy试图放在上面进行覆盖
                        let copyHandleView = studyHandleView.copyView()
                        copyHandleView.view_choose.isHidden = true
                        copyHandleView.vioceSoundUrl = listen1Model.subjectList[self.viewModel.selectIndex.value!.row].correct
                        copyHandleView.vioceSoundUrl = listenNewModel.subjectList[page][self.viewModel.selectIndex.value!.row].correct
                        copyHandleView.btn_state.setImage(nil, for: .normal)
                        view.addSubview(copyHandleView)
                        view.layoutIfNeeded()
@@ -237,15 +243,16 @@
                                    self.view.layoutIfNeeded()
                        }completion: { complete in
                                    if complete{
                                                self.voicePlayer.playerAt(url: self.listen1Model.subjectList[self.viewModel.selectIndex.value!.row].correct)
                                                self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][self.viewModel.selectIndex.value!.row].correct)
                                    }
                        }
            }
            private func resetStackView(){
                        playedIndex.removeAll()
                        let newRow = viewModel.selectIndex.value!.row+1
                        if newRow == listen1Model.subjectList.count{ //防止坐标越界
                                    rootViewModel.answerItems[page] = listen1Model
                        if newRow >= listenNewModel.subjectList[page].count{ //防止坐标越界
                                    rootViewModel.answerItems[page] = listenNewModel.subjectList[page]
                                    NotificationCenter.default.post(name: NextLession_Noti, object: nil);return
                        }
@@ -273,13 +280,14 @@
                        }else{
                                    cell.label_title.isHidden = true
                        }
                        cell.setListen1SubModel(listen1Model.subjectList[indexPath.row])
                        cell.label_title.text = listen1Model.subjectList[indexPath.row].name
                        cell.setListen1SubModel(listenNewModel.subjectList[page][indexPath.row])
                        cell.label_title.text = listenNewModel.subjectList[page][indexPath.row].name
                        return cell
            }
            func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                        return min(4,listen1Model.subjectList.count)
                        return listenNewModel.subjectList[page].count
            }
}
@@ -291,16 +299,26 @@
                        for sub in stackView.arrangedSubviews as! [StudyHandleView]{
                                    if playedIndex.contains(sub.tag){
                                                sub.resetView()
                                                sub.view_choose.alpha = playedIndex.contains(sub.tag) ? 1:0
                                    }
                        }
                        print("--->\(page)")
                        if viewModel.answerType.value == .success{
                                    let v = rootViewModel.answerCount.value
                                    rootViewModel.answerCount.accept(v + 1)
                                    DispatchQueue.main.asyncAfter(deadline: .now()+3) {
                                                self.resetStackView()
                                                self.viewModel.answerType.accept(.none)
                                    }
                        }
//                        if isAnsterComplete{
////                                    getNextAnswer()
//                                    if !isAnsterDone{
//                                                let v = rootViewModel.answerCount.value
//                                                rootViewModel.answerCount.accept(v + 1)
//                                    }
//                        }
            }
}