Jelajahi Sumber

1.修改iOS Apex Drivers后台修改过的Order状态处理。

Pen Li 7 tahun lalu
induk
melakukan
977952990a

+ 9 - 4
Redant Drivers/Apex And Drivers/Home/HomeHeader.xib

@@ -12,21 +12,21 @@
     <objects>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <view contentMode="scaleToFill" id="Of7-Zs-dma">
+        <view contentMode="scaleToFill" id="Of7-Zs-dma" customClass="RAHomeSectionHeaderView">
             <rect key="frame" x="0.0" y="0.0" width="658" height="44"/>
             <rect key="frame" x="0.0" y="0.0" width="658" height="44"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <subviews>
             <subviews>
-                <label opaque="NO" userInteractionEnabled="NO" tag="5000" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zid-Ks-zO5">
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zid-Ks-zO5">
                     <rect key="frame" x="10" y="12" width="42" height="21"/>
                     <rect key="frame" x="10" y="12" width="42" height="21"/>
                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                     <nil key="textColor"/>
                     <nil key="textColor"/>
                     <nil key="highlightedColor"/>
                     <nil key="highlightedColor"/>
                 </label>
                 </label>
-                <button opaque="NO" tag="5002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="J4X-Vt-JUe">
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="J4X-Vt-JUe">
                     <rect key="frame" x="612" y="7" width="36" height="30"/>
                     <rect key="frame" x="612" y="7" width="36" height="30"/>
                     <state key="normal" title="More"/>
                     <state key="normal" title="More"/>
                 </button>
                 </button>
-                <view tag="5001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="68c-5k-TZT" customClass="RABadgeNumberView">
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="68c-5k-TZT" customClass="RABadgeNumberView">
                     <rect key="frame" x="57" y="12.5" width="20" height="20"/>
                     <rect key="frame" x="57" y="12.5" width="20" height="20"/>
                     <color key="backgroundColor" red="1" green="0.1047433005" blue="0.075207091899999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <color key="backgroundColor" red="1" green="0.1047433005" blue="0.075207091899999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <constraints>
                     <constraints>
@@ -47,6 +47,11 @@
             </constraints>
             </constraints>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <viewLayoutGuide key="safeArea" id="m5T-tW-9hq"/>
             <viewLayoutGuide key="safeArea" id="m5T-tW-9hq"/>
+            <connections>
+                <outlet property="badgeView" destination="68c-5k-TZT" id="AR6-eW-kbc"/>
+                <outlet property="moreBtn" destination="J4X-Vt-JUe" id="GLd-pT-vvy"/>
+                <outlet property="titleLaebl" destination="zid-Ks-zO5" id="kFh-0I-zJe"/>
+            </connections>
             <point key="canvasLocation" x="205" y="-122"/>
             <point key="canvasLocation" x="205" y="-122"/>
         </view>
         </view>
     </objects>
     </objects>

+ 3 - 0
Redant Drivers/Apex And Drivers/Home/More/RAHomeMoreViewController+TableDelegate.m

@@ -21,6 +21,9 @@
     RAHomeOrderModel *order = [self orderModelForIndexPath:indexPath];
     RAHomeOrderModel *order = [self orderModelForIndexPath:indexPath];
     if (order.backendFlag) {
     if (order.backendFlag) {
         order.backendFlag = !order.backendFlag;
         order.backendFlag = !order.backendFlag;
+        if (self.backendFlagOrderClickBlk) {
+            self.backendFlagOrderClickBlk();
+        }
     }
     }
     [self pushDetailViewControllerForModel:order];
     [self pushDetailViewControllerForModel:order];
 }
 }

+ 2 - 0
Redant Drivers/Apex And Drivers/Home/More/RAHomeMoreViewController.h

@@ -14,6 +14,8 @@
 @property (nonatomic,assign) RAOrderStatus type;
 @property (nonatomic,assign) RAOrderStatus type;
 @property (nonatomic,assign,readonly) NSUInteger orderCount;
 @property (nonatomic,assign,readonly) NSUInteger orderCount;
 
 
+@property (nonatomic,copy) void(^backendFlagOrderClickBlk)(void);
+
 - (RAHomeOrderModel *)orderModelForIndexPath:(NSIndexPath *)indexPath;
 - (RAHomeOrderModel *)orderModelForIndexPath:(NSIndexPath *)indexPath;
 
 
 - (void)pushDetailViewControllerForModel:(RAHomeOrderModel *)model;
 - (void)pushDetailViewControllerForModel:(RAHomeOrderModel *)model;

+ 22 - 0
Redant Drivers/Apex And Drivers/Home/RAHomeSectionHeaderView.h

@@ -0,0 +1,22 @@
+//
+//  RAHomeSectionHeaderView.h
+//  Apex And Drivers
+//
+//  Created by Jack on 2018/9/5.
+//  Copyright © 2018年 USAI. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "RAHomeViewController.h"
+
+extern const int TagBase;
+
+@interface RAHomeSectionHeaderView : UIView <RAHomeSectionModelDelegate>
+
+@property (nonatomic,strong) RAHomeSectionModel *model;
+
++ (instancetype)homeSectionHeader;
+
+- (void)addMoreClickTarget:(id)target selector:(SEL)selector;
+
+@end

+ 59 - 0
Redant Drivers/Apex And Drivers/Home/RAHomeSectionHeaderView.m

@@ -0,0 +1,59 @@
+//
+//  RAHomeSectionHeaderView.m
+//  Apex And Drivers
+//
+//  Created by Jack on 2018/9/5.
+//  Copyright © 2018年 USAI. All rights reserved.
+//
+
+#import "RAHomeSectionHeaderView.h"
+#import "RABadgeNumberView.h"
+
+const int TagBase = 6000;
+
+@interface RAHomeSectionHeaderView ()
+
+@property (nonatomic,strong) IBOutlet UILabel *titleLaebl;
+@property (nonatomic,strong) IBOutlet RABadgeNumberView *badgeView;
+@property (nonatomic,strong) IBOutlet UIButton *moreBtn;
+
+@end
+
+@implementation RAHomeSectionHeaderView
+
++ (instancetype)homeSectionHeader {
+    return [[[NSBundle mainBundle] loadNibNamed:@"HomeHeader" owner:nil options:nil] objectAtIndex:0];
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    
+    self.model = nil;
+    self.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.8];
+}
+
+
+- (void)addMoreClickTarget:(id)target selector:(SEL)selector {
+    [self.moreBtn addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
+}
+
+- (void)setModel:(RAHomeSectionModel *)model {
+    if (_model) {
+        _model.delegate = nil;
+    }
+    _model = model;
+    if (_model) {
+        _model.delegate = self;
+    }
+    
+    [self refreshUI];
+}
+
+- (void)refreshUI {
+    self.titleLaebl.text = _model.title;
+    self.badgeView.badgeNumber = _model.backendFlagCount;
+    self.moreBtn.tag = TagBase + _model.section;
+    self.moreBtn.hidden = !_model.hasMoreOrder;
+}
+
+@end

+ 10 - 35
Redant Drivers/Apex And Drivers/Home/RAHomeViewController+HomeTableDelegate.m

@@ -9,6 +9,7 @@
 #import "RAHomeViewController+HomeTableDelegate.h"
 #import "RAHomeViewController+HomeTableDelegate.h"
 #import "RAHomeOrderModel.h"
 #import "RAHomeOrderModel.h"
 #import "RABadgeNumberView.h"
 #import "RABadgeNumberView.h"
+#import "RAHomeSectionHeaderView.h"
 
 
 
 
 @implementation RAHomeViewController (HomeTableDelegate)
 @implementation RAHomeViewController (HomeTableDelegate)
@@ -20,41 +21,13 @@
 }
 }
 
 
 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+
+    RAHomeSectionHeaderView *header = [RAHomeSectionHeaderView homeSectionHeader];
+    RAHomeSectionModel *model = [self modelForSection:section];
+    header.model = model;
     
     
-//    UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(tableView.bounds), 44.0f)];
-//    header.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.8];
-//    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 11, CGRectGetWidth(tableView.bounds) - 100, 22)];
-//    [header addSubview:label];
-//
-//    label.text = [self titleForSection:section];
-//
-//    UIButton *expandBtn = [UIButton buttonWithType:UIButtonTypeSystem];
-//    expandBtn.frame = CGRectMake(CGRectGetWidth(tableView.bounds) - 90, 11, 80, 22);
-//    [expandBtn setTitle:@"More" forState:UIControlStateNormal];
-//
-//
-//    expandBtn.tag = section;
-//    [expandBtn addTarget:self action:@selector(sectionExpandSwithBtnClick:) forControlEvents:UIControlEventTouchUpInside];
-//    [header addSubview:expandBtn];
-//
-//    expandBtn.hidden = ![self hasMoreOrderForSection:section];
-//
-    
-    UIView *header = [[[NSBundle mainBundle] loadNibNamed:@"HomeHeader" owner:nil options:nil] objectAtIndex:0];
-    header.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.8];
-    
-    UILabel *titleLabel = (UILabel *)[header viewWithTag:5000];
-    RABadgeNumberView *badgeNumberView = (RABadgeNumberView *)[header viewWithTag:5001];
-    UIButton *moreBtn = (UIButton *)[header viewWithTag:5002];
-    
-    titleLabel.text = [self titleForSection:section];
-    
-    badgeNumberView.badgeNumber = [self backendCountForSection:section];
-    
-    moreBtn.tag = 6000 + section;
-    [moreBtn addTarget:self action:@selector(sectionExpandSwithBtnClick:) forControlEvents:UIControlEventTouchUpInside];
-    moreBtn.hidden = ![self hasMoreOrderForSection:section];
-    
+    [header addMoreClickTarget:self selector:@selector(sectionExpandSwithBtnClick:)];
+
     return header;
     return header;
 }
 }
 
 
@@ -65,8 +38,10 @@
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     
     
     RAHomeOrderModel *order = [self orderModelForIndexPath:indexPath];
     RAHomeOrderModel *order = [self orderModelForIndexPath:indexPath];
+    
     if (order.backendFlag) {
     if (order.backendFlag) {
         order.backendFlag = !order.backendFlag;
         order.backendFlag = !order.backendFlag;
+        [self decreaseBackendFlagCountForSection:indexPath.section];
     }
     }
     self.currentOrderID = order.orderID;
     self.currentOrderID = order.orderID;
     [self pushDetailViewControllerForModel:order];
     [self pushDetailViewControllerForModel:order];
@@ -75,7 +50,7 @@
 #pragma mark - Action
 #pragma mark - Action
 
 
 - (void)sectionExpandSwithBtnClick:(UIButton *)sender {
 - (void)sectionExpandSwithBtnClick:(UIButton *)sender {
-    [self showMoreOrderForSection:sender.tag - 6000];
+    [self showMoreOrderForSection:sender.tag - TagBase];
 }
 }
 
 
 @end
 @end

+ 38 - 1
Redant Drivers/Apex And Drivers/Home/RAHomeViewController.h

@@ -7,23 +7,60 @@
 //
 //
 
 
 #import "RABaseViewController.h"
 #import "RABaseViewController.h"
+#import "RAHomeOrderModel.h"
+
+@protocol RAHomeSectionModelDelegate <NSObject>
+
+- (void)refreshUI;
+
+@end
+
+#pragma mark - Section Model
+
+@interface RAHomeSectionModel : NSObject
+
+@property (nonatomic,assign) RAOrderStatus type;
+@property (nonatomic,strong) NSArray <RAHomeOrderModel *> *orders;
+@property (nonatomic,copy) NSString *title;
+@property (nonatomic,readonly) NSInteger ordersCount;
+@property (nonatomic,assign) NSInteger section;
+@property (nonatomic,assign) NSInteger totalCount;
+@property (nonatomic,assign) NSInteger backendFlagCount;///<后台修改Order的个数
+
+@property (nonatomic,weak) id<RAHomeSectionModelDelegate> delegate;
+
+- (BOOL)hasMoreOrder;
+
+@end
+
+#pragma mark - View Controller
 
 
-@class RAHomeOrderModel;
 @interface RAHomeViewController : RABaseViewController
 @interface RAHomeViewController : RABaseViewController
 
 
 @property (strong, nonatomic) IBOutlet UITableView *homeOrderTableView;
 @property (strong, nonatomic) IBOutlet UITableView *homeOrderTableView;
 
 
 @property (nonatomic,copy) NSString *currentOrderID;
 @property (nonatomic,copy) NSString *currentOrderID;
 
 
+@property (nonatomic,assign) BOOL reloadFlag;///<视图显示时Reload
+
 #pragma mark - Getter
 #pragma mark - Getter
 
 
 - (NSUInteger)orderSectionCount;
 - (NSUInteger)orderSectionCount;
+- (RAHomeSectionModel *)modelForSection:(NSInteger)section;
 - (NSUInteger)orderCountForSection:(NSInteger)section;
 - (NSUInteger)orderCountForSection:(NSInteger)section;
 - (RAHomeOrderModel *)orderModelForIndexPath:(NSIndexPath *)indexPath;
 - (RAHomeOrderModel *)orderModelForIndexPath:(NSIndexPath *)indexPath;
 - (NSString *)titleForSection:(NSInteger)section;
 - (NSString *)titleForSection:(NSInteger)section;
 - (BOOL)hasMoreOrderForSection:(NSInteger)section;
 - (BOOL)hasMoreOrderForSection:(NSInteger)section;
 - (NSInteger)backendCountForSection:(NSInteger)section;
 - (NSInteger)backendCountForSection:(NSInteger)section;
 
 
+#pragma mark - Set/Update
+
+- (void)setBackendFlagCount:(NSInteger)count forSection:(NSInteger)section;
+
+- (void)decreaseBackendFlagCountForSection:(NSInteger)section;
+
+- (void)setHeaderDelegate:(id<RAHomeSectionModelDelegate>) delegate forSection:(NSInteger)section;
+
 #pragma mark - Controller Action
 #pragma mark - Controller Action
 
 
 - (void)pushDetailViewControllerForModel:(RAHomeOrderModel *)model;
 - (void)pushDetailViewControllerForModel:(RAHomeOrderModel *)model;

+ 42 - 13
Redant Drivers/Apex And Drivers/Home/RAHomeViewController.m

@@ -7,7 +7,6 @@
 //
 //
 
 
 #import "RAHomeViewController.h"
 #import "RAHomeViewController.h"
-#import "RAHomeOrderModel.h"
 #import "RAOrderDetailViewController.h"
 #import "RAOrderDetailViewController.h"
 #import "RAProgressHUD.h"
 #import "RAProgressHUD.h"
 #import "ApexDriverUploadListVC.h"
 #import "ApexDriverUploadListVC.h"
@@ -16,18 +15,6 @@
 #import "UIScrollView+Empty.h"
 #import "UIScrollView+Empty.h"
 #import "RAEmptyView.h"
 #import "RAEmptyView.h"
 
 
-@interface RAHomeSectionModel : NSObject
-
-@property (nonatomic,assign) RAOrderStatus type;
-@property (nonatomic,strong) NSArray <RAHomeOrderModel *> *orders;
-@property (nonatomic,copy) NSString *title;
-@property (nonatomic,readonly) NSInteger ordersCount;
-@property (nonatomic,assign) NSInteger section;
-@property (nonatomic,assign) NSInteger totalCount;
-@property (nonatomic,assign) NSInteger backendFlagCount;///<后台修改Order的个数
-
-@end
-
 @implementation RAHomeSectionModel
 @implementation RAHomeSectionModel
 
 
 - (instancetype)init {
 - (instancetype)init {
@@ -49,6 +36,14 @@
     _orders = orderArr;
     _orders = orderArr;
 }
 }
 
 
+- (void)setBackendFlagCount:(NSInteger)backendFlagCount {
+    _backendFlagCount = backendFlagCount;
+    
+    if (self.delegate && [self.delegate respondsToSelector:@selector(refreshUI)]) {
+        [self.delegate refreshUI];
+    }
+}
+
 - (RAHomeOrderModel *)orderModelForIndex:(NSInteger)index {
 - (RAHomeOrderModel *)orderModelForIndex:(NSInteger)index {
     return [self.orders objectAtIndex:index];
     return [self.orders objectAtIndex:index];
 }
 }
@@ -108,6 +103,11 @@
 
 
 - (void)viewDidAppear:(BOOL)animated {
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     [super viewDidAppear:animated];
+    
+    if (self.reloadFlag) {
+        [self loadData];
+        self.reloadFlag = !self.reloadFlag;
+    }
 }
 }
 
 
 - (void)dealloc {
 - (void)dealloc {
@@ -207,6 +207,11 @@
     return _sectionArray;
     return _sectionArray;
 }
 }
 
 
+- (RAHomeSectionModel *)modelForSection:(NSInteger)section {
+    RAHomeSectionModel *sectionModel = [self.sectionArray objectAtIndex:section];
+    return sectionModel;
+}
+
 - (NSUInteger)orderSectionCount {
 - (NSUInteger)orderSectionCount {
     
     
     return self.sectionArray.count;
     return self.sectionArray.count;
@@ -237,6 +242,24 @@
     return sectionModel.backendFlagCount;
     return sectionModel.backendFlagCount;
 }
 }
 
 
+#pragma mark - Set/Update
+
+- (void)setBackendFlagCount:(NSInteger)count forSection:(NSInteger)section {
+    RAHomeSectionModel *sectionModel = [self.sectionArray objectAtIndex:section];
+    sectionModel.backendFlagCount = count;
+}
+
+- (void)decreaseBackendFlagCountForSection:(NSInteger)section {
+    RAHomeSectionModel *sectionModel = [self.sectionArray objectAtIndex:section];
+    NSInteger count = sectionModel.backendFlagCount;
+    sectionModel.backendFlagCount = --count;
+}
+
+- (void)setHeaderDelegate:(id<RAHomeSectionModelDelegate>)delegate forSection:(NSInteger)section {
+    RAHomeSectionModel *sectionModel = [self.sectionArray objectAtIndex:section];
+    sectionModel.delegate = delegate;
+}
+
 #pragma mark - Data
 #pragma mark - Data
 
 
 - (void)loadData {
 - (void)loadData {
@@ -353,6 +376,12 @@
     RAHomeMoreViewController *homeMoreVC = [RAHomeMoreViewController viewControllerFromStoryboard];
     RAHomeMoreViewController *homeMoreVC = [RAHomeMoreViewController viewControllerFromStoryboard];
     homeMoreVC.title = sectionModel.title;
     homeMoreVC.title = sectionModel.title;
     homeMoreVC.type = sectionModel.type;
     homeMoreVC.type = sectionModel.type;
+    
+    __weak typeof(self) weakSelf = self;
+    homeMoreVC.backendFlagOrderClickBlk = ^{
+        weakSelf.reloadFlag = YES;
+    };
+    
     [self.navigationController pushViewController:homeMoreVC animated:YES];
     [self.navigationController pushViewController:homeMoreVC animated:YES];
 }
 }