// // KWMSearchBrandVC.m // iCemarose // // Created by 陈荣科 on 16/8/30. // Copyright © 2016年 kollway. All rights reserved. // #import "KWMSearchBrandVC.h" #import "NSString+PinYin.h" #import "KWMSearchBrandView.h" #import "KWMStringUtil.h" #import "KWMBrandCaramelVC.h" #import "KWMSearchBrandsCell.h" #import <RXCollections/RXCollection.h> @interface KWMSearchBrandVC ()<UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate,KWMSearchBrandViewDelegate> @property (nonatomic,strong) NSMutableArray *dataArray; @property (nonatomic)KWMSearchBrandView *searchBrandView; @end @implementation KWMSearchBrandVC{ NSMutableArray *searchArr; NSString *searchTitle; } +(NSString *)kwmTag{ return @"KWMSearchBrandVC"; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [_searchBrandView removeFromSuperview]; searchArr = nil; searchTitle = nil; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES]; [self initHeaderView]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.automaticallyAdjustsScrollViewInsets = NO; self.title = @"所有品牌"; self.vLine.backgroundColor = [UIColor colorWithRed:244.0/255 green:245.0/255 blue:247.0/255 alpha:1]; searchArr = [NSMutableArray array]; [self initTableView]; [self RequestBrandsAPI]; } - (void)initHeaderView{ _searchBrandView = [[KWMSearchBrandView alloc] initWithFrame:CGRectMake(0, 20, UI_SCREEN_WIDTH, 44)]; [self.view addSubview:_searchBrandView]; _searchBrandView.delegate = self; } static NSString *identify = @"KWMSearchBrandsCell"; - (void)initTableView{ self.tbvSearchBrand.sectionIndexColor = [UIColor blackColor]; self.tbvSearchBrand.sectionIndexBackgroundColor = [UIColor clearColor]; [self.tbvSearchBrand setSeparatorStyle:UITableViewCellSeparatorStyleNone]; [self.tbvSearchBrand registerNib:[UINib nibWithNibName:identify bundle:nil] forCellReuseIdentifier:identify]; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClickBackgroundView:)]; [self.vBackground addGestureRecognizer:tapGesture]; } - (void)onClickBackgroundView:(UITapGestureRecognizer *)tapGesture{ [_searchBrandView CancelSearch]; self.vBackground.hidden = YES; } #pragma merk -- KWMSearchBrandViewDelegate - (void)kwm_GoBackLastController{ [self.navigationController popViewControllerAnimated:YES]; } - (void)kwm_cancelSearch{ [searchArr removeAllObjects]; searchTitle = nil; self.vBackground.hidden = YES; [self.tbvSearchBrand reloadData]; } - (void)kwm_tfSearchBeginEdit{ self.vBackground.hidden = NO; } - (void)kwm_InputSpace:(NSString *)text{ if (text.length == 0 || text == nil) { [self showToast:@"请输入需要搜索的内容"]; }else{ [_searchBrandView.tfBrand resignFirstResponder]; self.vBackground.hidden = YES; [self setSearchBrandsWith:text]; } } - (void)kwm_tfValueChange:(NSString *)text{ if (text.length==0) { [searchArr removeAllObjects]; searchTitle = nil; [self.tbvSearchBrand reloadData]; return; } [self setSearchBrandsWith:text]; } //搜索品牌名字判断 - (void)setSearchBrandsWith:(NSString *)text{ //首字母大写 NSString *pinYinStr = [KWMStringUtil transform:text]; pinYinStr = [pinYinStr stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[pinYinStr substringToIndex:1] uppercaseString]]; unichar aChar = [pinYinStr characterAtIndex:0]; NSString *firstStr = [NSString stringWithFormat:@"%c",aChar]; [self searchBrand:pinYinStr AndFirst:firstStr]; [self.tbvSearchBrand reloadData]; } - (void)searchBrand:(NSString *)brandStr AndFirst:(NSString *)firstStr{ BOOL isOne = NO; if ([firstStr isEqualToString:[brandStr uppercaseString]]) { isOne = YES; } for (int i = 0; i < _dataArray.count; ++i) { NSDictionary *dict = self.dataArray[i]; if (firstStr != nil) { searchTitle = firstStr; if ([firstStr isEqualToString:dict[@"firstLetter"]]) { [self JumpArr:dict[@"content"] Has:brandStr WithOnlyOne:isOne]; } } } } - (void)JumpArr:(NSArray *)arr Has:(NSString *)str WithOnlyOne:(BOOL)isOne{ if (searchArr.count > 0) { [searchArr removeAllObjects]; } if (isOne) {//输入第一个字母的时候 [searchArr addObjectsFromArray:arr]; return ; } for (int i = 0; i < arr.count; ++i) { NSString *tempStr = arr[i]; if ([tempStr containsString:str]) { [searchArr addObject:tempStr]; } } } #pragma mark--- UITableViewDataSource and UITableViewDelegate Methods--- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ if (searchArr.count > 0 || searchTitle != nil) { return 1; } return [self.dataArray count]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if (searchArr.count > 0 || searchTitle != nil) { return searchArr.count; } NSDictionary *dict = self.dataArray[section]; NSMutableArray *array = dict[@"content"]; return [array count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ KWMSearchBrandsCell *cell = [tableView dequeueReusableCellWithIdentifier:identify]; if (searchArr.count > 0 || searchTitle != nil) { cell.lbBrand.text = searchArr[indexPath.row]; }else{ NSDictionary *dict = self.dataArray[indexPath.section]; NSMutableArray *array = dict[@"content"]; cell.lbBrand.text = array[indexPath.row]; } return cell; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ //自定义Header标题 UIView* myView = [[UIView alloc] init]; myView.backgroundColor = [UIColor whiteColor]; UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 90, 40)]; titleLabel.textColor=[UIColor blackColor]; NSString *title; if (searchTitle != nil) { title = searchTitle; }else{ title = self.dataArray[section][@"firstLetter"]; } titleLabel.text=title; titleLabel.font = [UIFont fontWithName:@"PingFang SC" size:24]; UIView *vLine = [[UIView alloc] initWithFrame:CGRectMake(20, 39, UI_SCREEN_WIDTH - 40, 1)]; vLine.backgroundColor = [UIColor colorWithRed:244.0/255 green:245.0/255 blue:247.0/255 alpha:1]; [myView addSubview:vLine]; [myView addSubview:titleLabel]; return myView; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, UI_SCREEN_WIDTH ,5)]; footerView.backgroundColor = [UIColor colorWithRed:244.0/255 green:245.0/255 blue:247.0/255 alpha:1]; return footerView; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 40; } -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 5; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *brand; if (searchArr.count > 0) { brand = searchArr[indexPath.row]; }else{ NSDictionary *dict = self.dataArray[indexPath.section]; brand = [dict[@"content"] objectAtIndex:indexPath.row]; } NSString *str = [KWMStringUtil deleteOtherCharExceptLetterWithLine:brand]; NSLog(@"str: %@",str); //品牌介绍 KWMBrandCaramelVC *brandCaramelVC = (KWMBrandCaramelVC *)[KWMBaseVC findControllerBy:[KWMBrandCaramelVC kwmTag] fromStoryboard:@"Brand"]; brandCaramelVC.handle = str; brandCaramelVC.brand = brand; brandCaramelVC.isSale = NO; [tableView deselectRowAtIndexPath:indexPath animated:YES]; [self.navigationController pushViewController:brandCaramelVC animated:YES]; } #pragma mark---tableView索引相关设置---- //添加TableView头视图标题 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { NSDictionary *dict = self.dataArray[section]; NSString *title = dict[@"firstLetter"]; return title; } //添加索引栏标题数组 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { //搜索品牌时 if (searchArr.count >0 || searchTitle != nil) { return nil; } NSMutableArray *resultArray = [NSMutableArray array]; for (NSDictionary *dict in self.dataArray) { NSString *title = dict[@"firstLetter"]; [resultArray addObject:title]; } return resultArray; } //点击索引栏标题时执行 - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { //这里是为了指定索引index对应的是哪个section的,默认的话直接返回index就好。其他需要定制的就针对性处理 if ([title isEqualToString:UITableViewIndexSearch]) { [tableView setContentOffset:CGPointZero animated:NO];//tabview移至顶部 return NSNotFound; } else { return [[UILocalizedIndexedCollation currentCollation]sectionForSectionIndexTitleAtIndex:index+1] - 1; // -1 添加了搜索标识 } } - (void)RequestBrandsAPI{ __weak KWMSearchBrandVC *weakSelf = self; void(^failure)(NSURLSessionDataTask *,NSError *) = ^(NSURLSessionDataTask *task,NSError *error){ [weakSelf hideLoading]; [weakSelf showError:error]; }; void(^success)(NSURLSessionDataTask *,KWMBrandsResult *) = ^(NSURLSessionDataTask *task,KWMBrandsResult *result){ [weakSelf hideLoading]; if([weakSelf hasCemaroseError:result]){ return ; } // NSArray *indexArray= [result.brands arrayWithPinYinFirstLetterFormat]; NSArray *indexArray= [[result.brands rx_filterWithBlock:^BOOL(id each) { return each && each != [NSNull null]; }] arrayWithPinYinFirstLetterFormat]; _dataArray =[NSMutableArray arrayWithArray:indexArray]; [weakSelf.tbvSearchBrand reloadData]; }; [self.api getAllBrand:nil success:success failure:failure]; [self showLoading]; } @end