RAOrderEditViewController+TableDataSource.m 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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 "RAQRCodeScannerViewController.h"
  15. #import "RACameraViewController.h"
  16. #import "RAPhotoPreviewController.h"
  17. @implementation RAOrderEditViewController (TableDataSource)
  18. - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
  19. RAEditBaseModel *model = [self modelForIndexPath:indexPath];
  20. switch (model.type) {
  21. case RAEditTypeLabel: {
  22. RAEditLabelCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditLabelCell" forIndexPath:indexPath];
  23. RAEditLabelModel *labelModel = (RAEditLabelModel *)model;
  24. cell.model = labelModel;
  25. return cell;
  26. }
  27. break;
  28. case RAEditTypeInput: {
  29. RAEditScanInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditScanInputCell" forIndexPath:indexPath];
  30. RAEditInputModel *inputModel = (RAEditInputModel *)model;
  31. cell.model = inputModel;
  32. cell.delegate = self;
  33. return cell;
  34. }
  35. break;
  36. case RAEditTypeMultInput: {
  37. RAEditMultInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditMultInputCell" forIndexPath:indexPath];
  38. RAEditMultInputModel *multInputModel = (RAEditMultInputModel *)model;
  39. cell.model = multInputModel;
  40. cell.delegate = self;
  41. return cell;
  42. }
  43. break;
  44. case RAEditTypePhoto: {
  45. RAEditPhotoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditPhotoCell" forIndexPath:indexPath];
  46. RAEditPhotoModel *photoModel = (RAEditPhotoModel *)model;
  47. cell.model = photoModel;
  48. cell.delegate = self;
  49. return cell;
  50. }
  51. break;
  52. default:
  53. break;
  54. }
  55. UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"detaulCell"];
  56. return cell;
  57. }
  58. - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  59. return [self itemCountForSection:section];
  60. }
  61. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  62. return [self editSectionCount];
  63. }
  64. #pragma mark - PhotoCell Delegate
  65. - (void)photoCellWillOpenCameraOrShowPhoto:(RAEditPhotoCell *)cell {
  66. if (cell.model.photo) {
  67. RAPhotoPreviewController *previewVC = [RAPhotoPreviewController viewControllerFromStoryboard];
  68. previewVC.image = cell.model.photo;
  69. previewVC.completion = ^{
  70. cell.model.photo = nil;
  71. };
  72. [self.navigationController pushViewController:previewVC animated:YES];
  73. } else {
  74. RACameraViewController *cameraVC = [RACameraViewController viewControllerFromStoryboard];
  75. cameraVC.completion = ^(UIImage *image) {
  76. cell.model.photo = image;
  77. };
  78. cameraVC.fromVC = self;
  79. [self.navigationController pushViewController:cameraVC animated:YES];
  80. }
  81. }
  82. #pragma mark - Input Delegate
  83. - (void)scanInputCell:(RAEditScanInputCell *)cell clickScanButton:(UIButton *)sender {
  84. RAQRCodeScannerViewController *scanVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
  85. scanVC.completion = ^(NSString *value) {
  86. cell.model.value = value;
  87. };
  88. [self.navigationController pushViewController:scanVC animated:YES];
  89. }
  90. - (void)beginEditInputCell:(RAEditScanInputCell *)cell {
  91. self.editingIndexPath = [self indexPathForCell:cell];
  92. }
  93. - (void)endEditInputCell:(RAEditScanInputCell *)cell {
  94. self.editingIndexPath = nil;
  95. }
  96. #pragma mark - MultInput Delegate
  97. - (void)beginEditMultInputCell:(RAEditMultInputCell *)cell {
  98. self.editingIndexPath = [self indexPathForCell:cell];
  99. }
  100. - (void)endEditMultInputCell:(RAEditMultInputCell *)cell {
  101. self.editingIndexPath = nil;
  102. }
  103. @end