| | |
| | | private var listenNewModel:ListenNewModel! |
| | | private var randomElement:Listen1SubModel? |
| | | private var page:Int! |
| | | private var isListen:Bool = false |
| | | private(set) var isListen:Bool = false |
| | | private var isAnsterComplete:Bool = false //是否已经回答完成[小题] |
| | | private var isAnsterDone:Bool = false //是否已经回答完成[大题] |
| | | |
| | | private var isAnsterModel = Set<Listen1SubModel>() |
| | | private var isAnsterModel = [Listen1SubModel]() |
| | | private var menuView:VoiceHandleView? |
| | | |
| | | private lazy var collectionView:UICollectionView = { |
| | |
| | | var teamScheduleModel:TeamScheduleModel?{ |
| | | didSet{ |
| | | if let m = teamScheduleModel{ |
| | | var temp = [Listen1SubModel]() |
| | | for v in listenNewModel.subjectList[page]{ |
| | | //已回答 |
| | | if m.topicIds.contains(v.id){ |
| | | isAnsterModel.insert(v) //记录 |
| | | temp.append(v) |
| | | } |
| | | } |
| | | isAnsterModel.insert(contentsOf: temp, at: 0) |
| | | |
| | | //todo |
| | | // let teamId = weakSelf.listenNewModel.data?.id.components(separatedBy: ",")[weakSelf.page] |
| | | // weakSelf.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].id) |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | collectionView.reloadData() |
| | | print("加载======DidLoad") |
| | | |
| | | //回传记录,始终保持答题进度 |
| | | if let team = teamScheduleModel{ |
| | | let v = team.schedule - 1 |
| | | for i in 0..<v{ |
| | | isAnsterModel.append(listenNewModel.subjectList[page][i]) |
| | | } |
| | | } |
| | | |
| | | //制造随机 |
| | | listenNewModel.subjectList[page].shuffle() |
| | | getNextAnswer(isFirst: true) |
| | |
| | | VoicePlayer.share().playerAt(url: self.randomElement?.correct) |
| | | self.menuView?.playing() |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | collectionView.reloadData() |
| | | getNextAnswer(isFirst: true) |
| | | } |
| | | |
| | | |
| | | func tobefore(){ |
| | | if isAnsterModel.count == 1{return} |
| | | |
| | | isAnsterModel.removeLast() |
| | | |
| | | rootViewModel.answerCount.accept(page + isAnsterModel.count) |
| | | |
| | | randomElement = isAnsterModel.last |
| | | menuView?.playUrl = randomElement?.correct |
| | | VoicePlayer.share().playerAt(url: self.randomElement?.correct) |
| | | menuView?.playing() |
| | | |
| | | listenNewModel.subjectList[page].shuffle() |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | /// 下一题 |
| | | /// - Parameter isFirst: 是否首次进入,首次页码不+1 |
| | | private func getNextAnswer(isFirst:Bool = false){ |
| | |
| | | return |
| | | } |
| | | |
| | | randomElement = listenNewModel.subjectList[page].randomElement() |
| | | randomElement = listenNewModel.subjectList[page].randomElement() //随机抽题 |
| | | if randomElement != nil{ |
| | | //如果已经回答,或标记为已回答(返回上一小题时) |
| | | if isAnsterModel.contains(randomElement!){ |
| | | getNextAnswer();return |
| | | } |
| | | isAnsterModel.insert(randomElement!) |
| | | |
| | | //没有回答 |
| | | if !isAnsterModel.contains(randomElement!){ |
| | | isAnsterModel.append(randomElement!) |
| | | } |
| | | |
| | | } |
| | | menuView?.playUrl = randomElement?.correct |
| | | |
| | |
| | | var answer:Fight_lessonType = .none |
| | | if self?.randomElement?.id == weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].id{ |
| | | answer = .success |
| | | self?.randomElement?.isAnster = true |
| | | self?.isListen = false |
| | | if self?.isAnsterComplete == false{ |
| | | self?.rootViewModel.correctNum += 1 |
| | |
| | | private func answerSuccess(_ cell:ListenFight_lesson_1_CCell){ |
| | | menuView?.snp.removeConstraints() |
| | | menuView?.playing() |
| | | menuView?.jq_cornerRadius = 0 |
| | | let v = cell.view_topHandle.convert(cell.bounds, to: self.view) |
| | | UIView.animate(withDuration: 0.3) { |
| | | self.menuView?.snp.updateConstraints { make in |