// // CustomTabbarController.m // Lighting // // Created by 曹云霄 on 16/4/27. // Copyright © 2016年 上海勾芒科技有限公司. All rights reserved. // #import "CustomTabbarController.h" #import "Toolview.h" #import "AppDelegate.h" #import "SceneLibraryViewController.h" #import "ProductLibraryViewController.h" #import "AboutViewController.h" #import "AllCustomerViewController.h" #import "CustomerOrderViewController.h" #import "UserViewController.h" #import "ChangePasswordViewController.h" #import "SearchViewController.h" #import "BaseViewController.h" #import "QRViewController.h" #import "ExperienceCentreViewController.h" #import "RebateViewController.h" #import <AVFoundation/AVFoundation.h> @interface CustomTabbarController ()<TabbarButtonClickdelegate,ChangpasswordDelegate,CancelButtondelegate,UITextFieldDelegate> @property (nonatomic,strong) NSArray *identifierArray; /** * 保存按钮引用 */ @property (nonatomic,strong) UIButton *Newbutton; /** * 控制器数组 */ @property (nonatomic,strong) NSMutableArray *vcArray; /** * 工具栏 */ @property (nonatomic,strong) Toolview *toolview; @end @implementation CustomTabbarController /** * UIStoryboard Identifier数组 * * @return NSArary */ - (NSArray *)identifierArray { if (_identifierArray == nil) { _identifierArray = [NSArray arrayWithObjects:@"SearchViewController",@"ShoppingViewController",@"ClientViewController",@"RebateViewController",@"SceneLibraryViewController",@"ProductLibraryViewController",@"AllCustomerViewController",@"CustomerOrderViewController",@"AboutViewController", nil]; } return _identifierArray; } - (NSMutableArray *)vcArray { if (!_vcArray) { _vcArray = [NSMutableArray array]; } return _vcArray; } -(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]; } - (void)viewDidLoad { [super viewDidLoad]; [self uiConfigAction]; [self addViewcontroller]; } #pragma mark -UI - (void)uiConfigAction { self.tabBar.frame = CGRectMake(ZERO, ZERO, ScreenWidth, NavigationHeight); self.toolview = [[Toolview alloc]initWithFrame:CGRectMake(ZERO, ZERO, ScreenWidth, NavigationHeight)]; self.toolview.delegate = self; self.toolview.inputField.delegate = self; self.delegate = self; [self.tabBar addSubview:self.toolview]; //显示体验中心 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ShowFollowHeart:) name:OPENFOLLOWHEARTVC object:nil]; //打开相应控制器 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(openControllerWithIndex:) name:OPENCONTROLLER object:nil]; } #pragma mark -添加controller到viewControllers - (void)addViewcontroller { NSMutableArray *controllerArray = [NSMutableArray array]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardwithCYX" bundle:nil]; for (int i=0; i<self.identifierArray.count; i++) { BaseViewController *control = [storyboard instantiateViewControllerWithIdentifier:self.identifierArray[i]]; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:control]; [self.vcArray addObject:nav]; [controllerArray addObject:control]; } self.viewControllers = self.vcArray; SHARED_APPDELEGATE.allControllerArray = controllerArray; self.selectedIndex = 2; } #pragma mark -移除系统自带的UITabBarButton - (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; for (UIView *view in self.tabBar.subviews) { if ([view isKindOfClass:NSClassFromString(@"UITabBarButton")]) { [view removeFromSuperview]; } } } #pragma amrk -TabbarButtonClickdelegate代理 - (void)ButtonClickAction:(NSInteger)Buttontag withButton:(UIButton *)button { [self.toolview.inputField resignFirstResponder]; [self dismissViewControllerAnimated:NO completion:nil]; _Newbutton = button; switch (Buttontag) { //右侧视图 case 100: [SHARED_APPDELEGATE.mmdrawer toggleDrawerSide:MMDrawerSideRight animated:YES completion:nil]; break; //某某用户 case 101: { UserViewController *userVC = [[UserViewController alloc]init]; userVC.delegate = self; userVC.preferredContentSize = CGSizeMake(260, 230); userVC.modalPresentationStyle = UIModalPresentationPopover; UIPopoverPresentationController *pop = userVC.popoverPresentationController; pop.permittedArrowDirections = UIPopoverArrowDirectionAny; pop.sourceView = userVC.view; pop.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button]; [self presentViewController:userVC animated:YES completion:nil]; } break; //我的客户 case 102: self.selectedIndex = 2; break; //购物车 case 103: //必须设置当前客户才能跳转到购物车 if (![Shoppersmanager manager].currentCustomer) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view.window animated:YES]; hud.labelText = @"必须设置当前客户才能访问购物车"; hud.margin = 10.f; hud.color = [[UIColor blackColor] colorWithAlphaComponent:0.5]; hud.minSize = CGSizeMake(200, 50); hud.animationType = MBProgressHUDAnimationZoom; hud.mode = MBProgressHUDModeText; hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:1.0f]; }else { self.selectedIndex = 1; } break; default: break; } } #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]; [self presentViewController:changpassword animated:YES completion:nil]; }]; } #pragma mark -取消按钮 - (void)cancelButtonClick { [self dismissViewControllerAnimated:NO completion:^{ UserViewController *userVC = [[UserViewController alloc]init]; userVC.delegate = self; userVC.preferredContentSize = CGSizeMake(260, 230); 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]; }]; } #pragma mark -二维码扫描 - (void)QrcodeButtonClick { WS(weakSelf); //判断权限 AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if(status !=AVAuthorizationStatusAuthorized) { UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:@"请在iPad的“设置-隐私-相机”选项中,允许欧立方访问你的相机" preferredStyle:UIAlertControllerStyleAlert]; [alertVC addAction:[UIAlertAction actionWithTitle:@"去设置" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { NSURL * url = [NSURL URLWithString:@"prefs:root=com.gomore.opple"]; dispatch_after(0.2, dispatch_get_main_queue(), ^{ [[UIApplication sharedApplication]openURL:url]; }); }]]; [alertVC addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { [weakSelf dismissViewControllerAnimated:YES completion:nil]; }]]; [self presentViewController:alertVC animated:YES completion:nil]; }else { QRViewController *qrVC = [[QRViewController alloc] initWithScanCompleteHandler:^(NSString *url) { [weakSelf dismissViewControllerAnimated:YES completion:^{ ProductLibraryViewController *product = [SHARED_APPDELEGATE.allControllerArray objectAtIndex_opple:4]; product.barcode = url; weakSelf.selectedIndex = 3; }]; }]; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf presentViewController:qrVC animated:YES completion:nil]; }); } } #pragma mark -搜索框代理方法 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { self.selectedIndex = 0; return YES; } #pragma mark -Search按钮 - (BOOL)textFieldShouldReturn:(UITextField *)textField { //搜索 if (![BaseViewController isBlankString:textField.text]) { [textField resignFirstResponder]; //搜索 [[NSNotificationCenter defaultCenter] postNotificationName:SEARCHSTRING object:textField.text]; } return YES; } #pragma mark -自定义选中 - (void)setSelectedIndex:(NSUInteger)selectedIndex { [super setSelectedIndex:selectedIndex]; [self tabBarController:self didSelectViewController:[self.vcArray objectAtIndex_opple:selectedIndex]]; } #pragma mark -回到最上层 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { if ([viewController isKindOfClass:[UINavigationController class]]) { UINavigationController *navVC = (UINavigationController *)viewController; [navVC popToRootViewControllerAnimated:NO]; } } #pragma mark -推出体验中心控制器 - (void)ShowFollowHeart:(NSNotification *)objc { if (![Shoppersmanager manager].currentCustomer) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view.window animated:YES]; hud.labelText = @"必须设置当前客户才能访问体验中心"; hud.margin = 10.f; hud.color = [[UIColor blackColor] colorWithAlphaComponent:0.5]; hud.minSize = CGSizeMake(200, 50); hud.animationType = MBProgressHUDAnimationZoom; hud.mode = MBProgressHUDModeText; hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:1.0f]; }else { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardwithCYX" 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]; } } #pragma mark - 打开相应的控制器 - (void)openControllerWithIndex:(NSNotification *)sender { NSInteger index = [sender.object integerValue]; [self dismissViewControllerAnimated:NO completion:nil]; self.selectedIndex = index; } @end