| | |
| | | |
| | | 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() |
| | |
| | | }() |
| | | |
| | | |
| | | 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) { |
| | |
| | | |
| | | private func addStackView(){ |
| | | |
| | | // getNextAnswer() |
| | | |
| | | for subV in stackView.arrangedSubviews{ |
| | | subV.removeFromSuperview() |
| | | } |
| | |
| | | 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 |
| | |
| | | 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{ |
| | |
| | | |
| | | 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) |
| | |
| | | //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() |
| | |
| | | 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 |
| | | } |
| | | |
| | |
| | | }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 |
| | | } |
| | | } |
| | | |
| | |
| | | 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) |
| | | // } |
| | | // } |
| | | } |
| | | } |