SearchViewController.m 7.94 KB
Newer Older
曹云霄's avatar
曹云霄 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
//
//  SearchViewController.m
//  Lighting
//
//  Created by 曹云霄 on 16/5/16.
//  Copyright © 2016年 上海勾芒科技有限公司. All rights reserved.
//

#import "SearchViewController.h"
#import "SearchCollectionViewCell.h"
#import "HotCollectionViewCell.h"
#import "ProductLibraryViewController.h"


@interface SearchViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>

/**
 * 数据源
 */
@property (nonatomic,strong) HotFilter *response;

/**
 *  本地搜索历史
 */
@property (nonatomic,strong) NSMutableArray *localSearchArray;

@end

@implementation SearchViewController



/**
 *  本地搜索历史初始化
 */
- (NSMutableArray *)localSearchArray
{
    if (_localSearchArray == nil) {
        
        _localSearchArray = [NSMutableArray array];
    }
    return _localSearchArray;
}


- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self uiConfigAction];
    [self getHotSearchdatas];
}


#pragma mark -渲染完成
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
}

#pragma mark -视图即将消失
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = YES;
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}


#pragma mark -布局
- (void)uiConfigAction
{
    self.hotCollectionviewLayout.itemSize = CGSizeMake(120, 44);
    self.hotCollectionviewLayout.minimumLineSpacing = 10;
    self.hotCollectionviewLayout.minimumInteritemSpacing = 10;
    self.hotCollectionviewLayout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
    self.historyLayout.itemSize = CGSizeMake(120, 44);
    self.historyLayout.minimumLineSpacing = 10;
    self.historyLayout.minimumInteritemSpacing = 10;
    self.historyLayout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
    self.historyCollectionView.delegate = self;
    self.historyCollectionView.dataSource = self;
    self.hotCollectionView.dataSource = self;
    self.hotCollectionView.delegate = self;
    self.hotCollectionView.alwaysBounceVertical = YES;
    self.historyCollectionView.alwaysBounceVertical = YES;
    //保存输入内容
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(searchInputString:) name:SEARCHSTRING object:nil];
}


#pragma mark -输入内容
- (void)searchInputString:(NSNotification *)not
{
    if (![self.localSearchArray containsObject:not.object]) {
         [self.localSearchArray addObject:not.object];
    }
    //调用商品控制器
    ProductLibraryViewController *productVC = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"ProductLibraryViewController"];
    productVC.selectedCode = not.object;
    [self.navigationController pushViewController:productVC animated:YES];
}


#pragma mark -获取本地存储搜索历史
- (void)getlocalsaveDatas
{
曹云霄's avatar
曹云霄 committed
113
    NSString *homeDictionary = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex_opple: 0];
曹云霄's avatar
曹云霄 committed
114 115 116 117 118 119 120 121 122 123
    NSString *homepath = [homeDictionary stringByAppendingPathComponent:SEARCHHISTORY];//添加储存的文件名
    self.localSearchArray = [NSKeyedUnarchiver unarchiveObjectWithFile:homepath];
    [self.historyCollectionView reloadData];
}



#pragma mark -归档搜索历史
- (void)SaveSearchDatas
{
曹云霄's avatar
曹云霄 committed
124
    NSString *homeDictionary = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex_opple: 0];
曹云霄's avatar
曹云霄 committed
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
    NSString *homepath = [homeDictionary stringByAppendingPathComponent:SEARCHHISTORY];//添加储存的文件名
    BOOL flag = [NSKeyedArchiver archiveRootObject:self.localSearchArray toFile:homepath];//归档一个字符串
    if (flag) {
        NSLog(@"归档成功");
    }
}


#pragma mark -将要加载前获取本地搜索历史
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self getlocalsaveDatas];
}


#pragma mark -视图消失后归档搜索历史
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [self.view endEditing:YES];
    [self SaveSearchDatas];
}


#pragma mark -获取热门搜索数据
- (void)getHotSearchdatas
{
    WS(weakSelf);
    [XBLoadingView showHUDViewWithDefault];
    [HTTP networkWithDictionaryRequestWithURL:SERVERREQUESTURL(HOTSEARCH)  withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) {
        
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            
             weakSelf.response = [[HotFilter alloc]initWithDictionary:RESPONSE(returnValue) error:nil];
            [weakSelf.hotCollectionView reloadData];
            
        }else
        {
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
        }

    }withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if ([collectionView isEqual:self.historyCollectionView]) {
        
         SearchCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"firstcell" forIndexPath:indexPath];
曹云霄's avatar
曹云霄 committed
178
        cell.searchLabe.text = [self.localSearchArray objectAtIndex_opple:indexPath.item];
曹云霄's avatar
曹云霄 committed
179 180 181
        return cell;
    }
    HotCollectionViewCell  *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"secondcell" forIndexPath:indexPath];
曹云霄's avatar
曹云霄 committed
182
    cell.responseDatas = [self.response.list objectAtIndex_opple:indexPath.item];
曹云霄's avatar
曹云霄 committed
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
    return cell;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    
    if ([collectionView isEqual:self.hotCollectionView]) {
        
        return self.response.list.count;
    }
    
    return self.localSearchArray.count;
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    if ([collectionView isEqual:self.hotCollectionView]) {
        
曹云霄's avatar
曹云霄 committed
201
        NSString *typeName = [[self.response.list objectAtIndex_opple:indexPath.item] typeName];
曹云霄's avatar
曹云霄 committed
202
        if (![self.localSearchArray containsObject:typeName]) {
曹云霄's avatar
曹云霄 committed
203
            [self.localSearchArray addObject:[[self.response.list objectAtIndex_opple:indexPath.item] typeName]];
曹云霄's avatar
曹云霄 committed
204
        }
曹云霄's avatar
曹云霄 committed
205
        [self callProductControl:[[self.response.list objectAtIndex_opple:indexPath.item] typecode]];
曹云霄's avatar
曹云霄 committed
206 207 208
    }
    else if ([collectionView isEqual:self.historyCollectionView])
    {
曹云霄's avatar
曹云霄 committed
209
        [self callProductControl:[self.localSearchArray objectAtIndex_opple:indexPath.item]];
曹云霄's avatar
曹云霄 committed
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
    }
}

#pragma mark - 调用商品控制器
- (void)callProductControl:(NSString *)codeString
{
    ProductLibraryViewController *productVC = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"ProductLibraryViewController"];
    productVC.selectedCode = codeString;
    [self.navigationController pushViewController:productVC animated:NO];
}

#pragma mark -释放
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

#pragma mark -清除搜索历史
- (IBAction)delecteSearchHistoryButtonClick:(UIButton *)sender {
    
    
曹云霄's avatar
曹云霄 committed
231
    NSString *homeDictionary = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex_opple: 0];
曹云霄's avatar
曹云霄 committed
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
    NSString *homepath = [homeDictionary stringByAppendingPathComponent:SEARCHHISTORY];//添加储存的文件名
    NSFileManager *manager = [NSFileManager defaultManager];
    [manager removeItemAtPath:homepath error:nil];
    
    [self.localSearchArray removeAllObjects];
    [self.historyCollectionView reloadData];
    
}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}



@end