| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- //
- // 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 "RAEditDateModel.h"
- #import "RAEditMultPhotoModel.h"
- #import "RAPhotoCell.h"
- #import "RAPhotoItemModel.h"
- #import "RAQRCodeScannerViewController.h"
- #import "RACameraViewController.h"
- #import "RAPhotoPreviewController.h"
- #import "SignatureViewController.h"
- #import "UIImage+RedAnt.h"
- #import "RADatePickerViewController.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;
- case RAEditTypeDate: {
- RAEditDateModel *dateModel = (RAEditDateModel *)model;
- RAEditDateCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RAEditDateCell" forIndexPath:indexPath];
- cell.model = dateModel;
- cell.delegate = self;
- return cell;
- }
- break;
- case RAEditTypeMultPhoto: {
- RAEditMultPhotoModel *multPhotoModel = (RAEditMultPhotoModel *)model;
- RAPhotoCell *cell = [tableView dequeueReusableCellWithIdentifier:RAPhotoCell.reuseId forIndexPath:indexPath];
- cell.model = multPhotoModel.model;
- 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 - Private
- - (void)_showCameraWithBlock:(void (^)(UIImage *))blk {
-
- RACameraViewController *cameraVC = [RACameraViewController viewControllerFromStoryboard];
- cameraVC.completion = ^(UIImage *image) {
- if (blk) {
- blk(image);
- }
- };
- cameraVC.fromVC = self;
- [self.navigationController pushViewController:cameraVC animated:YES];
- }
- - (void)_showPhotoPreview:(UIImage *)image WithBlock:(void (^)(void))blk {
-
- RAPhotoPreviewController *previewVC = [RAPhotoPreviewController viewControllerFromStoryboard];
- previewVC.image = image;
- previewVC.completion = ^{
- if (blk) {
- blk();
- }
- };
- [self.navigationController pushViewController:previewVC animated:YES];
- }
- #pragma mark - PhotoCell Delegate
- - (void)photoCellWillOpenCameraOrShowPhoto:(RAEditPhotoCell *)cell {
-
- if (cell.model.photo) {
-
- [self _showPhotoPreview:cell.model.photo WithBlock:^{
- cell.model.photo = nil;
- }];
-
- } else {
-
- [self _showCameraWithBlock:^(UIImage *image) {
- cell.model.photo = [UIImage img_compress:image kbsize:1024];
- }];
- }
- }
- #pragma mark - Input Delegate
- - (void)scanInputCell:(RAEditScanInputCell *)cell clickScanButton:(UIButton *)sender {
-
- RAQRCodeScannerViewController *scanVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
- scanVC.QRCodeViewControllerDidCompletion = ^(RAQRCodeScannerViewController *qrcodeViewController, NSString *value) {
-
- cell.model.value = value;
- [qrcodeViewController.navigationController popViewControllerAnimated:YES];
- };
-
- scanVC.QRCodeViewControllerDidCanceled = ^(RAQRCodeScannerViewController *qrcodeViewController) {
- [qrcodeViewController.navigationController popViewControllerAnimated:YES];
- };
-
- [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;
- if (model.expand) {
-
- if ([model.expand isKindOfClass:[NSDictionary class]]) {
-
- NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
- [self expandIndexPath:indexPath withJsonItem:model.expand];
-
- } else if ([model.expand isKindOfClass:[RAEditBaseModel class]]) {
-
- if (((RAEditBaseModel *)model.expand).autofill) {
- [((RAEditBaseModel *)model.expand) updateDefaultValue];
- }
- }
-
- }
- }
- };
- [self.navigationController pushViewController:vc animated:NO];
-
- }
- }
- #pragma mark - DateCellDelegate
- - (void)dateCell:(RAEditDateCell *)cell didClickForModel:(RAEditDateModel *)model {
- if (model) {
-
- UIDatePickerMode mode = UIDatePickerModeDate;
- switch (model.mode) {
- case RAEditTypeModeTime: {
- mode = UIDatePickerModeTime;
- }
- break;
- case RAEditTypeModeDate: {
- mode = UIDatePickerModeDate;
- }
- break;
- case RAEditTypeModeDateAndTime: {
- mode = UIDatePickerModeDateAndTime;
- }
- break;
-
- default:
- break;
- }
-
- [RADatePickerViewController presentDatePicker:self title:model.title dateMode:mode withSetBlk:^(NSDate *date) {
- model.date = date;
- }];
- }
- }
- #pragma mark - Multiple Photo Cell Delegate
- - (void)photoCell:(RAPhotoCell *)cell didClickPhotoItem:(RAPhotoItemModel *)model {
-
- if ([model isEmpty]) {
-
- [self _showCameraWithBlock:^(UIImage *image) {
- model.photo = [UIImage img_compress:image kbsize:1024];
- }];
-
- } else {
-
- [self _showPhotoPreview:model.photo WithBlock:^{
- model.photo = nil;
- }];
- }
- }
- @end
|