// // RAOrderEditViewController+TableDataSource.m // Apex And Drivers // // Created by Jack on 2018/6/4. // Copyright © 2018年 USAI. All rights reserved. // #import "RAOrderEditViewController+TableDataSource.h" #import "RAEditLabelCell.h" #import "RAEditInputModel.h" #import "RAEditMultInputModel.h" #import "RAEditLabelModel.h" #import "RAEditPhotoModel.h" #import "RAEditSignatureModel.h" #import "RAQRCodeScannerViewController.h" #import "RACameraViewController.h" #import "RAPhotoPreviewController.h" #import "SignatureViewController.h" #import "UIImage+RedAnt.h" @implementation RAOrderEditViewController (TableDataSource) - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { RAEditBaseModel *model = [self modelForIndexPath:indexPath]; switch (model.type) { case RAEditTypeLabel: { RAEditLabelCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditLabelCell" forIndexPath:indexPath]; RAEditLabelModel *labelModel = (RAEditLabelModel *)model; cell.model = labelModel; return cell; } break; case RAEditTypeInput: { RAEditScanInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditScanInputCell" forIndexPath:indexPath]; RAEditInputModel *inputModel = (RAEditInputModel *)model; cell.model = inputModel; cell.delegate = self; return cell; } break; case RAEditTypeMultInput: { RAEditMultInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditMultInputCell" forIndexPath:indexPath]; RAEditMultInputModel *multInputModel = (RAEditMultInputModel *)model; cell.model = multInputModel; cell.delegate = self; return cell; } break; case RAEditTypePhoto: { RAEditPhotoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditPhotoCell" forIndexPath:indexPath]; RAEditPhotoModel *photoModel = (RAEditPhotoModel *)model; cell.model = photoModel; cell.delegate = self; return cell; } break; case RAEditTypeSignature: { RAEditSignatureModel *signatureModel = (RAEditSignatureModel *)model; RAEditSignatureCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditSignatureCell" forIndexPath:indexPath]; cell.model = signatureModel; cell.delegate = self; return cell; } break; default: break; } UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"detaulCell"]; return cell; } - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self itemCountForSection:section]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [self editSectionCount]; } #pragma mark - PhotoCell Delegate - (void)photoCellWillOpenCameraOrShowPhoto:(RAEditPhotoCell *)cell { if (cell.model.photo) { RAPhotoPreviewController *previewVC = [RAPhotoPreviewController viewControllerFromStoryboard]; previewVC.image = cell.model.photo; previewVC.completion = ^{ cell.model.photo = nil; }; [self.navigationController pushViewController:previewVC animated:YES]; } else { RACameraViewController *cameraVC = [RACameraViewController viewControllerFromStoryboard]; cameraVC.completion = ^(UIImage *image) { cell.model.photo = [UIImage img_compress:image kbsize:1024]; }; cameraVC.fromVC = self; [self.navigationController pushViewController:cameraVC animated:YES]; } } #pragma mark - Input Delegate - (void)scanInputCell:(RAEditScanInputCell *)cell clickScanButton:(UIButton *)sender { RAQRCodeScannerViewController *scanVC = [RAQRCodeScannerViewController viewControllerFromStoryboard]; scanVC.completion = ^(NSString *value) { cell.model.value = value; }; [self.navigationController pushViewController:scanVC animated:YES]; } - (void)beginEditInputCell:(RAEditScanInputCell *)cell { self.editingIndexPath = [self indexPathForCell:cell]; } - (void)endEditInputCell:(RAEditScanInputCell *)cell { self.editingIndexPath = nil; } #pragma mark - MultInput Delegate - (void)beginEditMultInputCell:(RAEditMultInputCell *)cell { self.editingIndexPath = [self indexPathForCell:cell]; } - (void)endEditMultInputCell:(RAEditMultInputCell *)cell { self.editingIndexPath = nil; } #pragma mark - Signature Delegate - (void)signatureCell:(RAEditSignatureCell *)cell tapSignature:(RAEditSignatureModel *)model { if (model) { SignatureViewController * vc =[ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SignatureViewController"]; vc.onReturnImg = ^(UIImage* img) { if(img!=nil) { model.signature = img; } }; [self.navigationController pushViewController:vc animated:NO]; } } @end