RAOrderEditViewController+TableDataSource.m 5.5 KB

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