123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- //
- // VipExamViewController.m
- // jiaPei
- //
- // Created by 张嵘 on 2019/8/26.
- // Copyright © 2019 JCZ. All rights reserved.
- //
- #import "VipExamViewController.h"
- #import "FMDatabaseAdditions.h"
- #import "DZMCoverController.h"
- #import "TempViewController.h"
- #import "QuestionModel.h"
- #import "SingData.h"
- #import "VipSubjectViewController.h"
- #import "HWPanModal.h"
- #import "ToolsBarView.h"
- @interface VipExamViewController () <DZMCoverControllerDelegate, TempViewControllerDelegate>
- @property (nonatomic, readwrite, weak) DZMCoverController *coverVC;
- @property (nonatomic, readwrite, assign) int number;/// 记录数字
- @property (nonatomic, readwrite, assign) int firstNum;///再次进来的第一题
- @property (nonatomic, readwrite, retain) FMDatabase *db;
- @property (nonatomic, readwrite, retain) FMDatabaseQueue *dbQueue;
- @property (nonatomic, readwrite, strong) UISegmentedControl *segmentedControl;
- @property (nonatomic, readwrite, strong) UILabel *titleLab;
- @property (nonatomic, readwrite, strong) UILabel *selLab;///选中条显示
- @property (nonatomic, readwrite, strong) VipSubjectViewController *collectionViewController;
- @property (nonatomic, readwrite, strong) ToolsBarView *toolsBarView;
- @end
- @implementation VipExamViewController
- #pragma mark - Life Circle
- - (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
- self.tabBarController.tabBar.hidden = YES;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- [self initUI];
- }
- - (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
- int popNum = _firstNum<self.questionArr.count-1 ?_firstNum+1:(int)self.questionArr.count-1;
- [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:popNum] forKey:@"QUESTIONNUM"];
- [[NSUserDefaults standardUserDefaults] synchronize];
- }
- - (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- NSLog(@"ViewControllerBook 释放了");
- }
- #pragma mark - Private Functions
- - (void)initUI {
- /// 导航栏设置
- [self configNavigationBar];
- [self creatNaviNorColor:subTitleColor SelColor:defGreen];
- _selLab.backgroundColor = defGreen;
- _db = [SingData getInstance].db;
- self.dbQueue = [SingData getInstance].queue;
- ///获取数据
- if (self.questionArr.count==0) {
- self.number = [[[NSUserDefaults standardUserDefaults] objectForKey:@"QUESTIONNUM"]intValue];
- if (self.number!=0){
- NSLog(@"已自动回到上次答题位置");
- }
- [self changeCityQuestion];
- }else{
- [self creatCoverVC];
- }
-
-
-
- }
- - (void)segmentValueChanged:(UISegmentedControl *)seg {
- NSUInteger segIndex = [seg selectedSegmentIndex];
- if (segIndex == 1) {//背题
- _showAnswer =_coverVC.isCanTap=1;
- _selLab.frame = CGRectMake(_segmentedControl.frame.size.width / 2 + 120 * HeightScale, _segmentedControl.frame.size.height + 5, 12, 2);
- NSLog(@"已为你显示答案");
- } else {//答题
- _showAnswer = _coverVC.isCanTap = 0;
- _selLab.frame = CGRectMake(120 * HeightScale, _segmentedControl.frame.size.height + 5, 12, 2);
- NSLog(@"已为你隐藏答案");
- }
-
- if (self.questionArr.count > 0) {
- [self.coverVC setController:[self creatSubVC] animated:NO isAbove:NO];
- }
- }
- - (void)creatCoverVC {
- DZMCoverController *coverVC = [[DZMCoverController alloc] init];
- coverVC.delegate = self;
- [self.view addSubview:coverVC.view];
- [self addChildViewController:coverVC];
- self.coverVC = coverVC;
- [self.coverVC setController:[self creatSubVC]];
- }
- - (TempViewController *)creatSubVC {
- TempViewController *vc = [[TempViewController alloc] init];
- vc.model = self.questionArr[self.number];
- vc.showAnswer = _showAnswer;
- vc.index = self.number;
- vc.delegate = self;
- return vc;
- }
- - (void)creatNaviNorColor:(UIColor *)norColor SelColor:(UIColor *)selColor {
- [self.segmentedControl setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
- norColor,
- NSForegroundColorAttributeName,
- [UIFont systemFontOfSize:60 * HeightScale],
- NSFontAttributeName,nil] forState:UIControlStateNormal];
- [self.segmentedControl setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
- selColor,
- NSForegroundColorAttributeName,
- [UIFont systemFontOfSize:60 * HeightScale],
- NSFontAttributeName,nil] forState:UIControlStateSelected];
- }
- /// 根据车型取题
- - (void)changeCityQuestion {
-
- FMResultSet *resultSet;
- resultSet =[_db executeQuery:@"select * from dt_question where cert_type in (2,1) and course=1 order by chapter"];
-
-
- while ( [ resultSet next ] )
- {
-
- // 对应字段来取数据
- QuesTionItem *Item = [[QuesTionItem alloc] init];
- Item.HiddenRightAnswer = YES;
-
- Item.questionID = [resultSet intForColumn:@"question_id"];
- Item.type = [resultSet intForColumn:@"type"];
- Item.chapter = [resultSet intForColumn:@"chapter"];
- Item.isRight = 0;
- Item.userAnswer = @"";
- Item.is_favorite = [resultSet intForColumn:@"is_favorite"];
- Item.question = [NSString stringWithFormat:@"%@",[ resultSet stringForColumn: @"question" ]];
- Item.category = [resultSet intForColumn:@"media_type"];
- if (Item.category != 0) {
- if (Item.category == 1) {
- Item.picName = [resultSet stringForColumn:@"img_url"];
- }else{
- Item.VediaName = [resultSet stringForColumn:@"video_url"];
- }
- }
-
- if (Item.type != 1) {
- NSString *option_a = [resultSet stringForColumn:@"option_a"];
- NSString *option_b = [resultSet stringForColumn:@"option_b"];
- NSString *option_c = [resultSet stringForColumn:@"option_c"];
- NSString *option_d = [resultSet stringForColumn:@"option_d"];
- Item.Awasers = @[option_a,option_b,option_c,option_d];
- }
-
- Item.difficulty = [resultSet intForColumn:@"difficulty"];
- Item.RightAwaser = [resultSet stringForColumn:@"answer"];
- Item.Comments = [resultSet stringForColumn:@"comments"];
- [self.questionArr addObject:Item];//获取到所有车型科目一四的所有题目
- }
-
- [self searchExamRecord]; //顺序练习
-
- if (self.questionArr.count > 0) {
- [self creatCoverVC];
- [self creatToolsBar];
- }
-
- }
- - (void)creatToolsBar {
- [self.view addSubview:self.toolsBarView];
- @weakify(self)
- [self.toolsBarView.listBtn setTapActionWithBlock:^(UIGestureRecognizer *gestureRecoginzer) {
- @strongify(self)
- self.collectionViewController.index = self.number;
- [self presentPanModal:self.collectionViewController];
- }];
- }
- /// 查看答题记录
- - (void)searchExamRecord {
- FMResultSet *RightresultSet = [_db executeQuery:@"select * from dt_practice_record where course = 1 and mode = 1 and cert_type = 1"];
- // 逐行读取数据
- while ( [ RightresultSet next ] )
- {
- NSInteger ID = [RightresultSet intForColumn:@"question_id"];
- for (QuesTionItem *item in self.questionArr) {
- if (item.questionID == ID) {
- item.userAnswer = [RightresultSet stringForColumn:@"user_answer"];
- if ([item.userAnswer isEqualToString:[NSString stringWithFormat:@"%d",[RightresultSet intForColumn:@"RIGHT"]]]) {
- item.isRight=1;//答对
- }else{
- item.isRight=2;//答错
- }
- }
- }
-
- }
- }
- /// 保存更新答题记录 ,如果没有打完自动跳转到下一题 ,model:1顺序2随机3专项4答对5打错6未答7收藏8模拟9考试纪录10章节 . */
- -(void)saveTheAnswerRecordActionWithQuesTionItem:(QuesTionItem *_Nullable)item isRight:(NSInteger)right{
- /*
- *自动跳转到下一题
- */
-
- _firstNum=self.number;
- if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"AutoJump"] isEqual:@1]) {
- if (self.number<self.questionArr.count-1&&right==1) {
- [self jumpNextQuestion];
- }
- }
-
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- [self.dbQueue inDatabase:^(FMDatabase *db) {
- BOOL issecect = [db executeUpdate:@"INSERT INTO dt_practice_record (course,mode,cert_type,question_id,user_answer,RIGHT,more_types) VALUES (1,1,1,?,?,?)",
- [NSNumber numberWithInteger:item.questionID],
- item.userAnswer,
- item.RightAwaser];
- if (issecect) {
- NSLog(@"____________插入成功%ld",(long)item.questionID);
- }
- }];
- });
- }
- -(void)jumpNextQuestion{
- self.number += 1;
- [self.coverVC setController:[self creatSubVC] animated:YES isAbove:NO];
- }
- #pragma mark - DZMCoverControllerDelegate
- /// 切换结果
- - (void)coverController:(DZMCoverController *)coverController currentController:(UIViewController *)currentController finish:(BOOL)isFinish {
- if (!isFinish) { // 切换失败
- TempViewController *vc = (TempViewController *)currentController;
- self.number = vc.index;
- }
- }
- /// 上一个控制器
- - (UIViewController *)coverController:(DZMCoverController *)coverController getAboveControllerWithCurrentController:(UIViewController *)currentController {
- if (self.number == 0) {
- return nil;
- }
- self.number -= 1;
- return [self creatSubVC];
- }
- /// 下一个控制器
- - (UIViewController *)coverController:(DZMCoverController *)coverController getBelowControllerWithCurrentController:(UIViewController *)currentController {
- if (self.number==self.questionArr.count-1) {
- return nil;
- }
- self.number += 1;
- return [self creatSubVC];
- }
- #pragma mark - LazyLoad
- - (NSMutableArray *)questionArr {
- if (!_questionArr) {
- _questionArr = [NSMutableArray array];
- }
- return _questionArr;
- }
- - (UILabel *)titleLab {
- if (!_titleLab) {
- _titleLab = [UILabel new];
- _titleLab.textAlignment = NSTextAlignmentCenter;
- _titleLab.frame = CGRectMake(0, 0, kScreenWidth, kNavOffSet);
- self.navigationItem.titleView = _titleLab;
- }
- return _titleLab;
- }
- - (UISegmentedControl *)segmentedControl {
- if (!_segmentedControl) {
- NSArray * _titles = @[@"答题模式", @"背题模式"];
- _segmentedControl = [[UISegmentedControl alloc] initWithItems:_titles];
- _segmentedControl.selectedSegmentIndex = _showAnswer;
- _segmentedControl.tintColor = [UIColor clearColor];
- _selLab = [[UILabel alloc] initWithFrame:CGRectMake(120 * HeightScale + (170 * HeightScale) * (int)_showAnswer, _segmentedControl.frame.size.height + 5, 12, 2)];
- [_segmentedControl addSubview:_selLab];
-
- [_segmentedControl addTarget:self action:@selector(segmentValueChanged:) forControlEvents:UIControlEventValueChanged];
- self.navigationItem.titleView = _segmentedControl;
- }
- return _segmentedControl;
- }
- - (VipSubjectViewController *)collectionViewController {
- if (!_collectionViewController) {
- _collectionViewController = [[VipSubjectViewController alloc] init];
- _collectionViewController.questionArr = self.questionArr;
- }
- return _collectionViewController;
- }
- - (ToolsBarView *)toolsBarView {
- if (!_toolsBarView) {
- _toolsBarView = [[ToolsBarView alloc] initWithFrame:CGRectMake(0, kScreenHeight - 44 - kSafeAreaBottomHeight - kNavOffSet, kScreenWidth, 44)];
- [RACObserve(self, number) subscribeNext:^(id _Nullable x) {
- [_toolsBarView.listBtn setTitleNormal:[NSString stringWithFormat:@"%ld/%lu",[x integerValue] + 1,(unsigned long)self.questionArr.count]];
- }];
- }
- return _toolsBarView;
- }
- @end
|