| | |
| | | self.page = page |
| | | self.listenNewModel = listenNewModel |
| | | } |
| | | |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | navigationItem.titleView = UIView() |
| | |
| | | NotificationCenter.default.post(name: NextLession_Noti, object: nil) |
| | | weakSelf.viewModel.answerType.accept(.none) |
| | | weakSelf.viewModel.selectIndex.accept(nil) |
| | | weakSelf.rootViewModel.answerItems[weakSelf.page] = weakSelf.listenNewModel.subjectList[weakSelf.page] |
| | | weakSelf.isListen = false |
| | | } |
| | | return |
| | |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | | super.viewDidLayoutSubviews() |
| | | let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout |
| | | let w = (self.collectionView.size.width - flowLayout.minimumLineSpacing) / 2 |
| | | let h = (self.collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2 |
| | | |
| | | if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{ |
| | | flowLayout.itemSize = CGSize(width: w, height: h) |
| | | collectionView.reloadData() |
| | | } |
| | | } |
| | | |
| | | override func setRx() { |
| | | viewModel.selectIndex.subscribe(onNext: {[weak self] index in |
| | | guard let weakSelf = self else { return } |
| | |
| | | self?.isAnsterComplete = true |
| | | |
| | | VoicePlayer.share().playSuccessVoice() |
| | | |
| | | let teamId = weakSelf.listenNewModel.data?.id.components(separatedBy: ",")[weakSelf.page] |
| | | weakSelf.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].id) |
| | | |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+2) { |
| | | VoicePlayer.share().playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].correct) |
| | | } |
| | |
| | | self?.answerSuccess(cell) |
| | | case .fail: |
| | | self?.viewModel.answerType.accept(.fail) |
| | | // self?.collectionView.isUserInteractionEnabled = false |
| | | self?.answerFail(errorSound: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].error) |
| | | self?.collectionView.reloadData() |
| | | default:break |
| | | } |
| | | } |
| | |
| | | }completion: { _ in |
| | | self.collectionView.reloadData() |
| | | } |
| | | } |
| | | |
| | | private func answerFail(errorSound:String?){ |
| | | self.collectionView.reloadData() |
| | | VoicePlayer.share().playerAt(url: errorSound) |
| | | } |
| | | } |
| | | |
| | |
| | | isListen = false |
| | | self.view.isUserInteractionEnabled = false |
| | | } |
| | | |
| | | |
| | | func playComplete() { |
| | | isListen = true |
| | | self.view.isUserInteractionEnabled = true |