CustomTabbarController.m 12 KB
Newer Older
曹云霄's avatar
曹云霄 committed
1 2 3 4 5 6 7 8 9 10 11

//
//  CustomTabbarController.m
//  Lighting
//
//  Created by 曹云霄 on 16/4/27.
//  Copyright © 2016年 上海勾芒科技有限公司. All rights reserved.
//

#import "CustomTabbarController.h"
#import "Toolview.h"
曹云霄's avatar
曹云霄 committed
12
#import "AppDelegate.h"
13 14 15
#import "SceneLibraryViewController.h"
#import "ProductLibraryViewController.h"
#import "AboutViewController.h"
曹云霄's avatar
曹云霄 committed
16 17
#import "AllCustomerViewController.h"
#import "CustomerOrderViewController.h"
曹云霄's avatar
曹云霄 committed
18
#import "UserViewController.h"
19
#import "ChangePasswordViewController.h"
勾芒's avatar
勾芒 committed
20
#import "SearchViewController.h"
勾芒's avatar
勾芒 committed
21
#import "BaseViewController.h"
勾芒's avatar
勾芒 committed
22
#import "QRViewController.h"
曹云霄's avatar
曹云霄 committed
23
#import "ExperienceCentreViewController.h"
曹云霄's avatar
曹云霄 committed
24
#import "RebateViewController.h"
曹云霄's avatar
曹云霄 committed
25 26 27
#import "GuideIntegralViewController.h"
#import "LearningCenterMainViewController.h"
#import "AnnouncementViewController.h"
28
#import "MessageViewController.h"
曹云霄's avatar
曹云霄 committed
29

勾芒's avatar
勾芒 committed
30 31

@interface CustomTabbarController ()<TabbarButtonClickdelegate,ChangpasswordDelegate,CancelButtondelegate,UITextFieldDelegate>
曹云霄's avatar
曹云霄 committed
32 33

@property (nonatomic,strong) NSArray *identifierArray;
曹云霄's avatar
曹云霄 committed
34

35 36 37 38 39
/**
 *  保存按钮引用
 */
@property (nonatomic,strong) UIButton *Newbutton;

勾芒's avatar
勾芒 committed
40 41 42
/**
 *  控制器数组
 */
43
@property (nonatomic,strong) NSMutableArray *vcArray;
勾芒's avatar
勾芒 committed
44

曹云霄's avatar
曹云霄 committed
45 46 47 48 49
/**
 *  工具栏
 */
@property (nonatomic,strong) Toolview *toolview;

曹云霄's avatar
曹云霄 committed
50 51 52 53
@end

@implementation CustomTabbarController

曹云霄's avatar
曹云霄 committed
54 55 56 57 58 59 60 61 62
/**
 *  UIStoryboard Identifier数组
 *
 *  @return NSArary
 */
- (NSArray *)identifierArray
{
    if (_identifierArray == nil) {
        
63
        _identifierArray = [NSArray arrayWithObjects:@"SearchViewController",@"ShoppingViewController",@"ClientViewController",@"RebateViewController",@"GuideIntegralViewController",@"AnnouncementViewController",@"MessageViewController",@"SceneLibraryViewController",@"ProductLibraryViewController",@"AllCustomerViewController",@"CustomerOrderViewController",@"LearningCenterMainViewController",@"AboutViewController", nil];
曹云霄's avatar
曹云霄 committed
64
    }
勾芒's avatar
勾芒 committed
65
    return _identifierArray;
曹云霄's avatar
曹云霄 committed
66 67
}

68 69 70 71 72 73 74 75
- (NSMutableArray *)vcArray
{
    if (!_vcArray) {
        _vcArray = [NSMutableArray array];
    }
    return _vcArray;
}

曹云霄's avatar
曹云霄 committed
76

勾芒's avatar
勾芒 committed
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.selectedViewController beginAppearanceTransition: YES animated: animated];
}

-(void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.selectedViewController endAppearanceTransition];
}

-(void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.selectedViewController beginAppearanceTransition: NO animated: animated];
}

-(void) viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [self.selectedViewController endAppearanceTransition];
}

曹云霄's avatar
曹云霄 committed
101 102
- (void)viewDidLoad {
    [super viewDidLoad];
103
    
曹云霄's avatar
曹云霄 committed
104 105
    [self uiConfigAction];
    [self addViewcontroller];
106
    [self addNSNotification];
曹云霄's avatar
曹云霄 committed
107 108 109 110 111
}

#pragma mark -UI
- (void)uiConfigAction
{
112 113
    self.tabBar.frame = CGRectMake(ZERO, ZERO, ScreenWidth, NavigationHeight);
    self.toolview = [[Toolview alloc]initWithFrame:CGRectMake(ZERO, ZERO, ScreenWidth, NavigationHeight)];
曹云霄's avatar
曹云霄 committed
114 115
    self.toolview.delegate = self;
    self.toolview.inputField.delegate = self;
勾芒's avatar
勾芒 committed
116
    self.delegate = self;
117 118
    [self.view addSubview:self.toolview];
    self.tabBar.hidden = YES;
119 120 121 122 123
}

#pragma mark -监听通知
- (void)addNSNotification
{
勾芒's avatar
勾芒 committed
124
    //显示体验中心
125 126 127 128 129 130 131 132 133 134 135
    [Notification addObserver:self selector:@selector(showFollowHeart:) name:OPENFOLLOWHEARTVC object:nil];
    //显示消息界面
    [Notification addObserver:self selector:@selector(showMessageController:) name:NSNOTIFICATION_MESSAGE object:nil];
    
    //app未启动点击通知回调
    NSDictionary *dict = [UserDefault objectForKey:NSNOTIFICATION_MESSAGE];
    if (dict) {
        self.selectedIndex = 6;
        [Notification postNotificationName:NSNOTIFICATION_MESSAGE object:dict];
        [UserDefault removeObjectForKey:NSNOTIFICATION_MESSAGE];
    }
曹云霄's avatar
曹云霄 committed
136 137
}

138 139 140 141 142
#pragma mark -显示消息界面
- (void)showMessageController:(NSNotification *)object
{
    self.selectedIndex = 6;
}
曹云霄's avatar
曹云霄 committed
143

144
#pragma mark -添加controller到viewControllers
曹云霄's avatar
曹云霄 committed
145 146
- (void)addViewcontroller
{
147
    NSMutableArray *controllerArray = [NSMutableArray array];
曹云霄's avatar
曹云霄 committed
148
    UIStoryboard *storyboard = nil;
149
    for (int i=0; i<self.identifierArray.count; i++) {
曹云霄's avatar
曹云霄 committed
150 151 152
        
        NSString *controllString = self.identifierArray[i];
        // 公告
153
        if ([controllString isEqualToString:@"AnnouncementViewController"] || [controllString isEqualToString:@"MessageViewController"]) {
曹云霄's avatar
曹云霄 committed
154 155 156 157 158 159 160 161 162 163
            storyboard = [BaseViewController getAnnouncementStoryboardClass];
        }else if ([controllString isEqualToString:@"LearningCenterMainViewController"]) {
            // 学习中心
            storyboard = [BaseViewController getLearningCenterStoryboardClass];
        }else if ([controllString isEqualToString:@"GuideIntegralViewController"]) {
            // 积分
            storyboard = [BaseViewController getGuideIntegralStoryboardClass];
        }else {
            storyboard = [BaseViewController getMainStoryboardClass];
        }
164 165 166 167 168
        BaseViewController *control = [storyboard instantiateViewControllerWithIdentifier:self.identifierArray[i]];
        UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:control];
        [self.vcArray addObject:nav];
        [controllerArray addObject:control];
    }
勾芒's avatar
勾芒 committed
169
    self.viewControllers = self.vcArray;
170
    SHARED_APPDELEGATE.allControllerArray = controllerArray;
曹云霄's avatar
曹云霄 committed
171
    SHARED_APPDELEGATE.tabBarController = self;
172
    self.selectedIndex = 2;
173 174 175 176 177 178 179 180 181 182 183
}


#pragma mark -移除系统自带的UITabBarButton
- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    for (UIView *view in self.tabBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            [view removeFromSuperview];
        }
    }
曹云霄's avatar
曹云霄 committed
184
}
曹云霄's avatar
曹云霄 committed
185

曹云霄's avatar
曹云霄 committed
186 187

#pragma amrk -TabbarButtonClickdelegate代理
188
- (void)buttonClickAction:(NSInteger)Buttontag withButton:(UIButton *)button
曹云霄's avatar
曹云霄 committed
189
{
曹云霄's avatar
曹云霄 committed
190 191
    [self.toolview.inputField resignFirstResponder];
    [self dismissViewControllerAnimated:NO completion:nil];
192
    _Newbutton = button;
曹云霄's avatar
曹云霄 committed
193 194
    switch (Buttontag) {
            
195
        case MENU:
曹云霄's avatar
曹云霄 committed
196 197 198 199
            
            [SHARED_APPDELEGATE.mmdrawer toggleDrawerSide:MMDrawerSideRight animated:YES completion:nil];
            
            break;
200 201 202 203 204 205
        case MESSAGE:
        {
            self.selectedIndex = 6;
        }
            break;
        case NOTICE:
曹云霄's avatar
曹云霄 committed
206 207 208 209
        {
            self.selectedIndex = 5;
        }
            break;
210
        case SHOPPING_GUIDE:
曹云霄's avatar
曹云霄 committed
211
            
曹云霄's avatar
曹云霄 committed
212 213
        {
            UserViewController *userVC = [[UserViewController alloc]init];
214
            userVC.delegate = self;
215
            userVC.preferredContentSize = CGSizeMake(260, 230);
曹云霄's avatar
曹云霄 committed
216 217 218 219
            userVC.modalPresentationStyle = UIModalPresentationPopover;
            UIPopoverPresentationController *pop = userVC.popoverPresentationController;
            pop.permittedArrowDirections = UIPopoverArrowDirectionAny;
            pop.sourceView = userVC.view;
220
            pop.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button];
曹云霄's avatar
曹云霄 committed
221 222
            [self presentViewController:userVC animated:YES completion:nil];
        }
曹云霄's avatar
曹云霄 committed
223
            break;
224
        case CUSTOMER:
曹云霄's avatar
曹云霄 committed
225
            
226
            self.selectedIndex = 2;
曹云霄's avatar
曹云霄 committed
227 228
            
            break;
229
        case SHOPPING_CAR:
勾芒's avatar
勾芒 committed
230 231 232
            //必须设置当前客户才能跳转到购物车
            if (![Shoppersmanager manager].currentCustomer) {
                
233
                [XBLoadingView showHUDViewWithText:@"必须设置当前客户才能访问购物车"];
234
            }else{
勾芒's avatar
勾芒 committed
235
                
236
                self.selectedIndex = 1;
勾芒's avatar
勾芒 committed
237
            }
曹云霄's avatar
曹云霄 committed
238 239
            
            break;
240
        
曹云霄's avatar
曹云霄 committed
241 242
        default:
            break;
曹云霄's avatar
曹云霄 committed
243
    }
曹云霄's avatar
曹云霄 committed
244 245
}

246 247 248 249 250 251 252 253 254 255 256 257
#pragma mark -修改密码点击
- (void)changPasswordButtonClick
{
    [self dismissViewControllerAnimated:NO completion:^{
        ChangePasswordViewController *changpassword = [[ChangePasswordViewController alloc]init];
        changpassword.delegate = self;
        changpassword.preferredContentSize = CGSizeMake(260, 180);
        changpassword.modalPresentationStyle = UIModalPresentationPopover;
        UIPopoverPresentationController *pop = changpassword.popoverPresentationController;
        pop.permittedArrowDirections = UIPopoverArrowDirectionAny;
        pop.sourceView = changpassword.view;
        pop.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:_Newbutton];
258
        [self presentViewController:changpassword animated:YES completion:nil];
259
    }];
曹云霄's avatar
曹云霄 committed
260
}
261 262 263 264 265 266 267 268


#pragma mark -取消按钮
- (void)cancelButtonClick
{
    [self dismissViewControllerAnimated:NO completion:^{
        UserViewController *userVC = [[UserViewController alloc]init];
        userVC.delegate = self;
269
        userVC.preferredContentSize = CGSizeMake(260, 230);
270 271 272 273 274 275 276 277 278
        userVC.modalPresentationStyle = UIModalPresentationPopover;
        UIPopoverPresentationController *pop = userVC.popoverPresentationController;
        pop.permittedArrowDirections = UIPopoverArrowDirectionAny;
        pop.sourceView = userVC.view;
        pop.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:_Newbutton];
        [self presentViewController:userVC animated:YES completion:nil];
    }];
}

曹云霄's avatar
曹云霄 committed
279
#pragma mark -二维码扫描
280
- (void)qrcodeButtonClick
曹云霄's avatar
曹云霄 committed
281
{
曹云霄's avatar
曹云霄 committed
282
    WS(weakSelf);
283 284
    // 判断应用是否有使用相机的权限
    if(![BaseViewController determineCameraPermissions]){
285 286

        ShowAlertView(self, @"提示", @"请在iPad的“设置-隐私-相机”选项中,允许欧立方访问你的相机", nil, @"知道了", UIAlertControllerStyleAlert, nil, nil);
曹云霄's avatar
曹云霄 committed
287
    }else {
288
        
曹云霄's avatar
曹云霄 committed
289
        QRViewController *qrVC = [[QRViewController alloc] initWithScanCompleteHandler:^(NSString *url) {
曹云霄's avatar
曹云霄 committed
290
            [weakSelf dismissViewControllerAnimated:YES completion:^{
曹云霄's avatar
曹云霄 committed
291 292 293
                
                ProductLibraryViewController *product = [SHARED_APPDELEGATE.allControllerArray objectAtIndex_opple:4];
                product.barcode = url;
曹云霄's avatar
曹云霄 committed
294
                weakSelf.selectedIndex = 3;
曹云霄's avatar
曹云霄 committed
295
            }];
296
        }];
曹云霄's avatar
曹云霄 committed
297 298 299 300
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf presentViewController:qrVC animated:YES completion:nil];
        });
    }
勾芒's avatar
勾芒 committed
301 302
}

勾芒's avatar
勾芒 committed
303

勾芒's avatar
勾芒 committed
304 305 306
#pragma mark -搜索框代理方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
307
    self.selectedIndex = 0;
勾芒's avatar
勾芒 committed
308 309 310 311 312 313
    return YES;
}

#pragma mark -Search按钮
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
314
    if (![BaseViewController isBlankString:textField.text]) {
勾芒's avatar
勾芒 committed
315
        [textField resignFirstResponder];
316
        [Notification postNotificationName:SEARCHSTRING object:textField.text];
勾芒's avatar
勾芒 committed
317 318
    }
    return YES;
曹云霄's avatar
曹云霄 committed
319 320
}

勾芒's avatar
勾芒 committed
321 322 323 324
#pragma mark -自定义选中
- (void)setSelectedIndex:(NSUInteger)selectedIndex
{
    [super setSelectedIndex:selectedIndex];
325
    [self didSelectNavigationController:[SHARED_APPDELEGATE.allControllerArray objectAtIndex_opple:selectedIndex]];
勾芒's avatar
勾芒 committed
326 327
}

328 329
#pragma mark -返回根视图控制器
- (void)didSelectNavigationController:(UIViewController *)viewController
勾芒's avatar
勾芒 committed
330
{
331 332 333 334
    if ([[viewController.navigationController.viewControllers firstObject] isKindOfClass:NSClassFromString(@"UIMoreListController")]){
        [viewController.navigationController popToViewController:viewController.navigationController.viewControllers[1] animated:YES];
    }else{
        [viewController.navigationController popToRootViewControllerAnimated:YES];
勾芒's avatar
勾芒 committed
335 336 337
    }
}

曹云霄's avatar
曹云霄 committed
338 339 340 341 342 343 344
#pragma mark -  切换tabbar selectedIndex
- (void)switchSelectedIndex:(NSInteger)selectedIndex
{
    [self.toolview switchLineViewOrigin:selectedIndex];
    self.selectedIndex = selectedIndex;
}

勾芒's avatar
勾芒 committed
345
#pragma mark -推出体验中心控制器
曹云霄's avatar
曹云霄 committed
346
- (void)showFollowHeart:(NSNotification *)objc
勾芒's avatar
勾芒 committed
347
{
曹云霄's avatar
曹云霄 committed
348
    if (![Shoppersmanager manager].currentCustomer) {
349
        [XBLoadingView showHUDViewWithText:@"必须设置当前客户才能访问体验中心"];
曹云霄's avatar
曹云霄 committed
350 351
    }else
    {
曹云霄's avatar
曹云霄 committed
352
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"OppleMain" bundle:nil];
353 354 355 356 357
        ExperienceCentreViewController *ExperienceCenter = [storyboard instantiateViewControllerWithIdentifier:@"ExperienceCentre"];
        ExperienceCenter.modalPresentationStyle = UIModalPresentationOverFullScreen;
        UIPopoverPresentationController *popover = ExperienceCenter.popoverPresentationController;
        popover.sourceView = ExperienceCenter.view;
        [self presentViewController:ExperienceCenter animated:YES completion:nil];
曹云霄's avatar
曹云霄 committed
358
    }
勾芒's avatar
勾芒 committed
359 360 361
}


曹云霄's avatar
曹云霄 committed
362
@end