| | |
| | | |
| | | 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() |
| | |
| | | |
| | | 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) { |
| | |
| | | |
| | | private func setAnswerStackView(){ |
| | | |
| | | guard viewModel.selectIndex.value != nil else{ |
| | | guard let selectIndex = viewModel.selectIndex.value else{ |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | 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 ?? "") |
| | |
| | | } |
| | | |
| | | @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{ |
| | |
| | | } |
| | | |
| | | 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) |
| | | } |
| | |
| | | answerType = .success |
| | | answerCount += 1 |
| | | rootViewModel.correctNum += 1 |
| | | let v = rootViewModel.answerCount.value + 1 |
| | | rootViewModel.answerCount.accept(v) |
| | | }else{ |
| | | answerType = .fail |
| | | rootViewModel.errorNum += 1 |
| | |
| | | |
| | | //回答完成,下一答题 |
| | | 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() |
| | |
| | | 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 |
| | |
| | | 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{ |
| | |
| | | } |
| | | |
| | | 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 |
| | | } |
| | | } |
| | | |