NYFailSpecialExerciseDetailsCell.m 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // NYFailSpecialExerciseDetailsCell.m
  3. // jiaPei
  4. //
  5. // Created by Ning.ge on 2024/12/12.
  6. // Copyright © 2024 JCZ. All rights reserved.
  7. //
  8. #import "NYFailSpecialExerciseDetailsCell.h"
  9. @interface NYFailSpecialExerciseDetailsCell ()
  10. @property (nonatomic, readwrite, strong) NYFailSpecialExerciseDetailItemModel *viewModel;
  11. @end
  12. @implementation NYFailSpecialExerciseDetailsCell
  13. #pragma mark - PublicMethods
  14. + (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
  15. static NSString *ID = @"NYFailSpecialExerciseDetailsCell";
  16. [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
  17. NYFailSpecialExerciseDetailsCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
  18. if (!cell) cell = [self rq_viewFromXib];
  19. return cell;
  20. }
  21. - (void)bindViewModel:(NYFailSpecialExerciseDetailItemModel *)viewModel {
  22. self.viewModel = viewModel;
  23. if(viewModel.dataModel.showType.intValue == 1){
  24. self.scoreStr_label.text = [NSString stringWithFormat:@"%zd分",viewModel.dataModel.score];
  25. CGFloat yOffset = 0; // 初始偏移量
  26. CGFloat cellHeight = 35.f; // 每个 Cell 的高度(根据实际设计调整)
  27. int bi = 0;
  28. for (int i= 0; i<viewModel.dataModel.question_array.count; i++) {
  29. NSString *title_str = [NSString stringWithFormat:@"%zd.%@",i+1,viewModel.dataModel.question_array[i]];
  30. // 从 XIB 加载 NYFailItemPointCellView
  31. NYFailItemPointCellView *cellView = [self.tbList_view viewWithTag:99+i];
  32. cellView.hidden = NO;
  33. CGSize str_size = [title_str rq_sizeWithFont:cellView.content_label.font limitWidth:cellView.content_label.width];
  34. if(str_size.height>cellHeight){
  35. cellHeight = str_size.height + 12.f;
  36. }
  37. cellView.frame = CGRectMake(0, yOffset, RQ_SCREEN_WIDTH-22*2, cellHeight);
  38. cellView.content_label.text = title_str;
  39. // 调整偏移量
  40. yOffset += cellHeight;
  41. bi = i+1;
  42. }
  43. for (int ci=bi; ci<30; ci++) {
  44. NYFailItemPointCellView *cellView = [self.tbList_view viewWithTag:99+ci];
  45. cellView.hidden = YES;
  46. }
  47. }
  48. // RAC(self.scoreStr_label, text) = [[/*RACObserve(viewModel.dataModel, s) deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal];*/
  49. }
  50. - (IBAction)submit_clickdo:(UIButton *)sender {
  51. if([@"考点1" isEqualToString:self.viewModel.itemPointTitle]){
  52. NSString *questionIds = self.viewModel.dataModel.questionIds;
  53. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithExerciseType:RQExerciseType_Error_Special_List questionIds:questionIds].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  54. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  55. }].toArray;
  56. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  57. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  58. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  59. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  60. RQViewModelIDKey : @"标题",
  61. RQExerciseTypeKey : @(RQExerciseType_Error_Special_List),
  62. RQViewModelUtilKey : arr,
  63. }];
  64. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  65. return;
  66. }
  67. if (RQ_VIP_Module.isSubject1Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne) {//判断是否 科一vip
  68. NSString *questionIds = self.viewModel.dataModel.questionIds;
  69. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithExerciseType:RQExerciseType_Error_Special_List questionIds:questionIds].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  70. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  71. }].toArray;
  72. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  73. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  74. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  75. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  76. RQViewModelIDKey : @"标题",
  77. RQExerciseTypeKey : @(RQExerciseType_Error_Special_List),
  78. RQViewModelUtilKey : arr,
  79. }];
  80. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  81. }else{
  82. //充值
  83. [RQ_VIP_Module gotoBuyVipWithVipPageType:RQVIPPageType_Full];
  84. }
  85. }
  86. #pragma mark - SystemMethods
  87. - (void)awakeFromNib {
  88. [super awakeFromNib];
  89. [self initTbList_view];
  90. }
  91. - (void)initTbList_view{
  92. self.vm_bm_imageView.image = [UIImage rq_resizableImage:@"blue_jb_bg"];
  93. // 初始化按钮
  94. CGFloat yOffset = 0; // 初始偏移量
  95. CGFloat cellHeight = 35.f; // 每个 Cell 的高度(根据实际设计调整)
  96. for (int i= 0; i<30; i++) {
  97. // 从 XIB 加载 NYFailItemPointCellView
  98. NYFailItemPointCellView *cellView = [[NYFailItemPointCellView alloc] initWithFrame:CGRectMake(0, yOffset, RQ_SCREEN_WIDTH-22*2, cellHeight)];
  99. //[[NSBundle mainBundle] loadNibNamed:@"NYFailItemPointCellView" owner:nil options:nil].firstObject;
  100. cellView.tag = 99+i;
  101. cellView.hidden = YES;
  102. // 添加到 tbList_view
  103. [self.tbList_view addSubview:cellView];
  104. // 调整偏移量
  105. yOffset += cellHeight;
  106. }
  107. }
  108. @end