RAOrderEditViewController+TableDataSource.m 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. //
  2. // RAOrderEditViewController+TableDataSource.m
  3. // Apex And Drivers
  4. //
  5. // Created by Jack on 2018/6/4.
  6. // Copyright © 2018年 USAI. All rights reserved.
  7. //
  8. #import "RAOrderEditViewController+TableDataSource.h"
  9. #import "RAEditLabelCell.h"
  10. #import "RAEditInputModel.h"
  11. #import "RAEditMultInputModel.h"
  12. #import "RAEditLabelModel.h"
  13. #import "RAEditPhotoModel.h"
  14. #import "RAEditSignatureModel.h"
  15. #import "RAQRCodeScannerViewController.h"
  16. #import "RACameraViewController.h"
  17. #import "RAPhotoPreviewController.h"
  18. #import "SignatureViewController.h"
  19. #import "UIImage+RedAnt.h"
  20. @implementation RAOrderEditViewController (TableDataSource)
  21. - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
  22. RAEditBaseModel *model = [self modelForIndexPath:indexPath];
  23. switch (model.type) {
  24. case RAEditTypeLabel: {
  25. RAEditLabelCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditLabelCell" forIndexPath:indexPath];
  26. RAEditLabelModel *labelModel = (RAEditLabelModel *)model;
  27. cell.model = labelModel;
  28. return cell;
  29. }
  30. break;
  31. case RAEditTypeInput: {
  32. RAEditScanInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditScanInputCell" forIndexPath:indexPath];
  33. RAEditInputModel *inputModel = (RAEditInputModel *)model;
  34. cell.model = inputModel;
  35. cell.delegate = self;
  36. return cell;
  37. }
  38. break;
  39. case RAEditTypeMultInput: {
  40. RAEditMultInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditMultInputCell" forIndexPath:indexPath];
  41. RAEditMultInputModel *multInputModel = (RAEditMultInputModel *)model;
  42. cell.model = multInputModel;
  43. cell.delegate = self;
  44. return cell;
  45. }
  46. break;
  47. case RAEditTypePhoto: {
  48. RAEditPhotoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditPhotoCell" forIndexPath:indexPath];
  49. RAEditPhotoModel *photoModel = (RAEditPhotoModel *)model;
  50. cell.model = photoModel;
  51. cell.delegate = self;
  52. return cell;
  53. }
  54. break;
  55. case RAEditTypeSignature: {
  56. RAEditSignatureModel *signatureModel = (RAEditSignatureModel *)model;
  57. RAEditSignatureCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditSignatureCell" forIndexPath:indexPath];
  58. cell.model = signatureModel;
  59. cell.delegate = self;
  60. return cell;
  61. }
  62. break;
  63. default:
  64. break;
  65. }
  66. UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"detaulCell"];
  67. return cell;
  68. }
  69. - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  70. return [self itemCountForSection:section];
  71. }
  72. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  73. return [self editSectionCount];
  74. }
  75. #pragma mark - PhotoCell Delegate
  76. - (void)photoCellWillOpenCameraOrShowPhoto:(RAEditPhotoCell *)cell {
  77. if (cell.model.photo) {
  78. RAPhotoPreviewController *previewVC = [RAPhotoPreviewController viewControllerFromStoryboard];
  79. previewVC.image = cell.model.photo;
  80. previewVC.completion = ^{
  81. cell.model.photo = nil;
  82. };
  83. [self.navigationController pushViewController:previewVC animated:YES];
  84. } else {
  85. RACameraViewController *cameraVC = [RACameraViewController viewControllerFromStoryboard];
  86. cameraVC.completion = ^(UIImage *image) {
  87. cell.model.photo = [UIImage img_compress:image kbsize:1024];
  88. };
  89. cameraVC.fromVC = self;
  90. [self.navigationController pushViewController:cameraVC animated:YES];
  91. }
  92. }
  93. #pragma mark - Input Delegate
  94. - (void)scanInputCell:(RAEditScanInputCell *)cell clickScanButton:(UIButton *)sender {
  95. RAQRCodeScannerViewController *scanVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
  96. scanVC.completion = ^(NSString *value) {
  97. cell.model.value = value;
  98. };
  99. [self.navigationController pushViewController:scanVC animated:YES];
  100. }
  101. - (void)beginEditInputCell:(RAEditScanInputCell *)cell {
  102. self.editingIndexPath = [self indexPathForCell:cell];
  103. }
  104. - (void)endEditInputCell:(RAEditScanInputCell *)cell {
  105. self.editingIndexPath = nil;
  106. }
  107. #pragma mark - MultInput Delegate
  108. - (void)beginEditMultInputCell:(RAEditMultInputCell *)cell {
  109. self.editingIndexPath = [self indexPathForCell:cell];
  110. }
  111. - (void)endEditMultInputCell:(RAEditMultInputCell *)cell {
  112. self.editingIndexPath = nil;
  113. }
  114. #pragma mark - Signature Delegate
  115. - (void)signatureCell:(RAEditSignatureCell *)cell tapSignature:(RAEditSignatureModel *)model {
  116. if (model) {
  117. SignatureViewController * vc =[ [UIStoryboard storyboardWithName:@"signature"
  118. bundle:[NSBundle mainBundle]]
  119. instantiateViewControllerWithIdentifier:@"SignatureViewController"];
  120. vc.onReturnImg = ^(UIImage* img)
  121. {
  122. if(img!=nil) {
  123. model.signature = img;
  124. }
  125. };
  126. [self.navigationController pushViewController:vc animated:NO];
  127. }
  128. }
  129. @end