From e2c245035a515bb7f623706b66f05e8dfc2c2fef Mon Sep 17 00:00:00 2001 From: 无故事王国 <841720330@qq.com> Date: 星期五, 14 六月 2024 17:39:07 +0800 Subject: [PATCH] fix --- DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift | 28 +++++--- DolphinEnglishLearnStudent/Models/CommonModel.swift | 4 + DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift | 2 DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift | 8 ++ DolphinEnglishLearnStudent/Services/Services.swift | 4 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift | 38 +++++++----- DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift | 8 ++ Podfile | 1 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift | 45 ++++++++++----- 9 files changed, 91 insertions(+), 47 deletions(-) diff --git a/DolphinEnglishLearnStudent/Models/CommonModel.swift b/DolphinEnglishLearnStudent/Models/CommonModel.swift index 6145abb..3319ed7 100644 --- a/DolphinEnglishLearnStudent/Models/CommonModel.swift +++ b/DolphinEnglishLearnStudent/Models/CommonModel.swift @@ -318,10 +318,14 @@ var updateTime: String = "" + //学习类型四专用 + var isQuestion:Int = 0 + //游戏类型2专用 var isOpen:Bool = false } +@available(*,deprecated,message: "废弃") struct Listen4Model:HandyJSON{ var data = [Listen4DataModel]() } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift index 570dd45..e84e90e 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift @@ -262,7 +262,8 @@ let nextPage = weakSelf.viewModel.currentPage.value + 1 var asComplete:Bool = false switch weakSelf.viewModel.listenType.value { - case .lesson1,.lesson2:asComplete = nextPage >= (weakSelf.data as! ListenNewModel).subjectList.count + case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:asComplete = nextPage >= (weakSelf.data as! ListenNewModel).subjectList.count + case .story1,.story2: asComplete = nextPage >= (weakSelf.data as! Listen1Model).storyList.count default:break } @@ -283,14 +284,16 @@ return } + if weakSelf.viewModel.listenType.value == .story2{ + weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value + if weakSelf.btn_next.isHidden{ + weakSelf.btn_exit.setTitle("完成", for: .normal) + } + } + //以下无效代码 -// if weakSelf.viewModel.listenType.value == .story2{ -// weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value -// if weakSelf.btn_next.isHidden{ -// weakSelf.btn_exit.setTitle("完成", for: .normal) -// } -// } +// // // //完成 // if nextPage >= weakSelf.viewModel.maxPage.value{ @@ -327,8 +330,11 @@ private func setPages(){ switch viewModel.listenType.value{ - case .lesson1,.lesson2,.lesson3: + case .lesson1,.lesson2,.lesson3,.lesson5: label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count)" + case .lesson4: + //两题为一组:需要/2 + label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count / 2)" case .game1,.game2: btn_forward.isHidden = true label_pageNum.isHidden = true @@ -339,7 +345,7 @@ case .story1,.story2: let count = (data as! Listen1Model).storyList.count viewModel.maxPage.accept(count) - label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(0)" + label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(count)" default:break } } @@ -352,7 +358,7 @@ var ids:String = "" switch viewModel.listenType.value { - case .lesson1,.lesson2: + case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: let data = (data as! ListenNewModel).data ids = data?.id ?? "" toalIntegral = data?.integral ?? 0 @@ -486,7 +492,9 @@ func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt { switch viewModel.listenType.value { - case .lesson1,.lesson2,.lesson3:return UInt((data as! ListenNewModel).subjectList.count) + case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:return UInt((data as! ListenNewModel).subjectList.count) + case .story1,.story2: + return UInt((data as! Listen1Model).storyList.count) default:break } @@ -494,10 +502,6 @@ //超级听力,只有一页 if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ return 1 - } - - if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{ - return UInt((data as! Listen1Model).storyList.count) } return UInt(viewModel.maxPage.value) } @@ -550,13 +554,13 @@ } if viewModel.listenType.value == .lesson4{ - let vc = HomeListenFight_lesson_4_VC(page: page, listen4Model: data as! Listen4Model) + let vc = HomeListenFight_lesson_4_VC(page: page, listenNewModel: data as! ListenNewModel) vc.rootViewModel = viewModel return vc } if viewModel.listenType.value == .lesson5{ - let vc = HomeListenFight_lesson_5_VC(page: page, listen1Model: data as! Listen1Model) + let vc = HomeListenFight_lesson_5_VC(page: page, listenNewModel: data as! ListenNewModel) vc.rootViewModel = viewModel return vc } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift index e5200f8..1f988ac 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift @@ -11,12 +11,13 @@ 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() @@ -41,11 +42,15 @@ 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) { @@ -102,7 +107,7 @@ private func setAnswerStackView(){ - guard viewModel.selectIndex.value != nil else{ + guard let selectIndex = viewModel.selectIndex.value else{ alertError(msg: "请先听题");return } @@ -118,10 +123,11 @@ } } + 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 ?? "") @@ -152,6 +158,11 @@ } @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{ @@ -162,8 +173,9 @@ } 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) } @@ -174,6 +186,8 @@ answerType = .success answerCount += 1 rootViewModel.correctNum += 1 + let v = rootViewModel.answerCount.value + 1 + rootViewModel.answerCount.accept(v) }else{ answerType = .fail rootViewModel.errorNum += 1 @@ -209,7 +223,9 @@ //回答完成,下一答题 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() @@ -267,8 +283,7 @@ 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 @@ -279,7 +294,7 @@ 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{ @@ -296,11 +311,11 @@ } 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 } } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift index e7ff7b6..e4c1d55 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift @@ -10,7 +10,7 @@ class HomeListenFight_lesson_5_VC: BaseVC { private var viewModel = FightAnswerViewModel() - private var listen1Model:Listen1Model! + private var listenNewModel:ListenNewModel! private var page:Int! private var answterCount:Int = 0 //回答计数,用于确定角标 private var playVoiceAt:Int? //播放声音的View @@ -48,11 +48,11 @@ return label }() - 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 +// self.listen1Model.subjectList.shuffle() } required init?(coder: NSCoder) { @@ -145,7 +145,7 @@ } var tempArray = [VoiceHandleView]() - for (i,value) in listen1Model.subjectList.enumerated(){ + for (i,value) in listenNewModel.subjectList[page].enumerated(){ let answerView = VoiceHandleView() answerView.listenType = .lesson5 answerView.tag = 1000+i @@ -172,7 +172,7 @@ private func showHintText(_ state:Bool){ if let at = playVoiceAt{ - label_hint.text = listen1Model.subjectList[at].name + label_hint.text = listenNewModel.subjectList[page][at].name UIView.animate(withDuration: 0.5) { if state{ self.label_hint.snp.remakeConstraints { make in @@ -202,8 +202,8 @@ viewModel.selectIndex.accept(indexPath) - let answer = listen1Model.subjectList[playVoiceAt!] - let selectAnswer = listen1Model.subjectList[indexPath.row] + let answer = listenNewModel.subjectList[page][playVoiceAt!] + let selectAnswer = listenNewModel.subjectList[page][indexPath.row] var answerType:Fight_lessonType = .none @@ -269,7 +269,7 @@ extension HomeListenFight_lesson_5_VC:UICollectionViewDataSource{ func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let model = listen1Model.subjectList[indexPath.row] + let model = listenNewModel.subjectList[page][indexPath.row] let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: indexPath) as! ListenFight_lesson_1_CCell cell.jq_addShadows(shadowColor: .black.withAlphaComponent(0.31), corner: 8, radius: 3, offset: CGSize(width: 0, height: 1), opacity: 1) if viewModel.selectIndex.value == indexPath{ @@ -288,7 +288,7 @@ } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return listen1Model.subjectList.count + return listenNewModel.subjectList[page].count } func numberOfSections(in collectionView: UICollectionView) -> Int { @@ -303,9 +303,15 @@ subV.resetView() } + if viewModel.answerType.value == .success{ + let v = rootViewModel.answerCount.value + 1 + rootViewModel.answerCount.accept(v) + viewModel.answerType.accept(.none) + } + DispatchQueue.main.asyncAfter(deadline: .now()+0.4) { if self.answterCount >= 4{ - self.rootViewModel.answerItems[self.page] = self.listen1Model + self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page] self.voicePlayer.playerEnd() NotificationCenter.default.post(name: NextLession_Noti, object: nil) } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift index 00bd77a..296eef7 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift @@ -80,9 +80,15 @@ fatalError("init(coder:) has not been implemented") } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + voicePlayer.delegate = self + } + override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) timer?.invalidate() + voicePlayer.delegate = nil voicePlayer.playerEnd() } @@ -111,7 +117,6 @@ } } - voicePlayer.delegate = self } override func setUI() { @@ -177,6 +182,7 @@ } @objc private func runloopTime(){ + print("进入。。。") times -= 1 label_hint.text = "请在\(times)s内选择答案!" diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift index 5b79f4a..a391dfa 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift @@ -239,7 +239,7 @@ v.view_choose.alpha = isPlayedSet.contains(v.tag) ? 1:0 } } - + func playing() { } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift index 93574aa..a75f462 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift @@ -25,6 +25,14 @@ } static func show(clouse:@escaping (Int)->Void){ + + var needLoad:Bool = true + for v in sceneDelegate?.window?.subviews ?? []{ + if v is ChooseLevelView{needLoad = false} + } + + guard needLoad else {return} + let levelView = ChooseLevelView.jq_loadNibView() levelView.clouseLevel = clouse sceneDelegate?.window?.addSubview(levelView) diff --git a/DolphinEnglishLearnStudent/Services/Services.swift b/DolphinEnglishLearnStudent/Services/Services.swift index f34ceda..918b535 100644 --- a/DolphinEnglishLearnStudent/Services/Services.swift +++ b/DolphinEnglishLearnStudent/Services/Services.swift @@ -62,7 +62,7 @@ } /// 自主学习4-有问有答 - class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen4Model>>{ + class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/questionsAndAnswers") params.append(key: "quarter", value: quarter) @@ -72,7 +72,7 @@ } /// 自主学习5-音图相配 - class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{ + class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/pictureMateVoice") params.append(key: "quarter", value: quarter) diff --git a/Podfile b/Podfile index 08b97b2..5c2a0cd 100644 --- a/Podfile +++ b/Podfile @@ -14,5 +14,6 @@ pod 'SVProgressHUD' # 提示框组件 pod 'CryptoSwift' # 常用加密算法 pod 'Alamofire' # 网络请求框架 + pod 'Lantern' # 图片浏览器 end -- Gitblit v1.7.1