CustomTabbarController.m 11.9 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
#import "HomeViewController.h"
曹云霄's avatar
曹云霄 committed
30

勾芒's avatar
勾芒 committed
31 32

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

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

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

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

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

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

@implementation CustomTabbarController

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

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

曹云霄's avatar
曹云霄 committed
77

勾芒's avatar
勾芒 committed
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
-(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
102 103
- (void)viewDidLoad {
    [super viewDidLoad];
104
    
曹云霄's avatar
曹云霄 committed
105 106
    [self uiConfigAction];
    [self addViewcontroller];
107
    [self addNSNotification];
曹云霄's avatar
曹云霄 committed
108 109 110 111 112
}

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

#pragma mark -监听通知
- (void)addNSNotification
{
勾芒's avatar
勾芒 committed
125
    //显示体验中心
126 127 128 129 130 131 132 133 134 135 136
    [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
137 138
}

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

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


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

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

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

247 248 249 250 251 252 253 254 255 256 257 258
#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];
259
        [self presentViewController:changpassword animated:YES completion:nil];
260
    }];
曹云霄's avatar
曹云霄 committed
261
}
262 263 264 265 266 267 268 269


#pragma mark -取消按钮
- (void)cancelButtonClick
{
    [self dismissViewControllerAnimated:NO completion:^{
        UserViewController *userVC = [[UserViewController alloc]init];
        userVC.delegate = self;
270
        userVC.preferredContentSize = CGSizeMake(260, 230);
271 272 273 274 275 276 277 278 279
        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
280
#pragma mark -二维码扫描
281
- (void)qrcodeButtonClick
曹云霄's avatar
曹云霄 committed
282
{
曹云霄's avatar
曹云霄 committed
283
    WS(weakSelf);
284 285
    // 判断应用是否有使用相机的权限
    if(![BaseViewController determineCameraPermissions]){
286
        ShowAlertView(self, @"提示", @"请在iPad的“设置-隐私-相机”选项中,允许欧立方访问你的相机", nil, @"知道了", UIAlertControllerStyleAlert, nil, nil);
曹云霄's avatar
曹云霄 committed
287 288
    }else {
        QRViewController *qrVC = [[QRViewController alloc] initWithScanCompleteHandler:^(NSString *url) {
曹云霄's avatar
曹云霄 committed
289
            [weakSelf dismissViewControllerAnimated:YES completion:^{
290
                ProductLibraryViewController *product = [SHARED_APPDELEGATE.allControllerArray objectAtIndex_opple:8];
曹云霄's avatar
曹云霄 committed
291
                product.barcode = url;
292 293
                SHARED_APPDELEGATE.lineView.hidden = YES;
                weakSelf.selectedIndex = 8;
曹云霄's avatar
曹云霄 committed
294
            }];
295
        }];
曹云霄's avatar
曹云霄 committed
296 297 298 299
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf presentViewController:qrVC animated:YES completion:nil];
        });
    }
勾芒's avatar
勾芒 committed
300 301
}

勾芒's avatar
勾芒 committed
302

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

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

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

327 328
#pragma mark -返回根视图控制器
- (void)didSelectNavigationController:(UIViewController *)viewController
勾芒's avatar
勾芒 committed
329
{
330 331 332 333
    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
334 335 336
    }
}

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

勾芒's avatar
勾芒 committed
343
#pragma mark -推出体验中心控制器
曹云霄's avatar
曹云霄 committed
344
- (void)showFollowHeart:(NSNotification *)objc
勾芒's avatar
勾芒 committed
345
{
346 347 348 349 350 351
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"OppleMain" bundle:nil];
    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
352 353 354
}


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