146 lines
6.1 KiB
Mathematica
146 lines
6.1 KiB
Mathematica
|
|
//
|
||
|
|
// QXSearchViewController.m
|
||
|
|
// QXLive
|
||
|
|
//
|
||
|
|
// Created by 启星 on 2025/5/8.
|
||
|
|
//
|
||
|
|
|
||
|
|
#import "QXSearchViewController.h"
|
||
|
|
#import "ZLCollectionViewVerticalLayout.h"
|
||
|
|
#import "QXSearchTopView.h"
|
||
|
|
#import "QXSearchHeaderView.h"
|
||
|
|
#import "QXSearchCell.h"
|
||
|
|
#import "QXFileManager.h"
|
||
|
|
#import "QXMineNetwork.h"
|
||
|
|
#import "QXSearchModel.h"
|
||
|
|
#import "QXHomeSearchResultVC.h"
|
||
|
|
|
||
|
|
@interface QXSearchViewController ()<UIGestureRecognizerDelegate,UICollectionViewDelegate,UICollectionViewDataSource,ZLCollectionViewBaseFlowLayoutDelegate,QXSearchTopViewDelegate>
|
||
|
|
@property(nonatomic,strong)UICollectionView* collectionView;
|
||
|
|
@property(nonatomic,strong)QXSearchTopView *topView;
|
||
|
|
|
||
|
|
@property(nonatomic,strong)NSMutableArray *resultArray;
|
||
|
|
@end
|
||
|
|
|
||
|
|
@implementation QXSearchViewController
|
||
|
|
|
||
|
|
- (void)viewDidLoad {
|
||
|
|
[super viewDidLoad];
|
||
|
|
// Do any additional setup after loading the view.
|
||
|
|
}
|
||
|
|
-(void)viewWillAppear:(BOOL)animated{
|
||
|
|
[super viewWillAppear:animated];
|
||
|
|
[self.navigationController setNavigationBarHidden:YES animated:YES];
|
||
|
|
}
|
||
|
|
- (void)initSubViews{
|
||
|
|
|
||
|
|
[self.view addSubview:self.topView];
|
||
|
|
[self.view addSubview:self.collectionView];
|
||
|
|
[self getHistoryData];
|
||
|
|
}
|
||
|
|
-(void)getHistoryData{
|
||
|
|
self.dataArray = [NSMutableArray arrayWithArray:[QXFileManager getSearchHistory]];
|
||
|
|
[self.collectionView reloadData];
|
||
|
|
}
|
||
|
|
#pragma mark - QXSearchTopViewDelegate
|
||
|
|
-(void)didClickCancel{
|
||
|
|
[self.navigationController popViewControllerAnimated:YES];
|
||
|
|
}
|
||
|
|
-(void)didClickSearchWithKeywords:(NSString *)keywords{
|
||
|
|
// 搜索
|
||
|
|
[QXFileManager writeSearchHistoryWithContent:keywords];
|
||
|
|
self.dataArray = [NSMutableArray arrayWithArray:[QXFileManager getSearchHistory]];
|
||
|
|
[self.collectionView reloadData];
|
||
|
|
[self searchActionWithKeywords:keywords];
|
||
|
|
}
|
||
|
|
|
||
|
|
-(void)searchActionWithKeywords:(NSString *)keywords{
|
||
|
|
MJWeakSelf
|
||
|
|
[QXMineNetwork searchApiWithType:2 search:keywords successBlock:^(NSDictionary * _Nonnull dict) {
|
||
|
|
[weakSelf.resultArray removeAllObjects];
|
||
|
|
NSArray *arr = [NSArray yy_modelArrayWithClass:[QXSearchModel class] json:dict];
|
||
|
|
if (arr.count == 0) {
|
||
|
|
showToast(@"暂无搜索结果");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
[weakSelf.resultArray addObjectsFromArray:arr];
|
||
|
|
[weakSelf pushToResultVC];
|
||
|
|
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||
|
|
|
||
|
|
}];
|
||
|
|
}
|
||
|
|
|
||
|
|
-(void)pushToResultVC{
|
||
|
|
QXHomeSearchResultVC *vc = [[QXHomeSearchResultVC alloc] init];
|
||
|
|
vc.resultArray = self.resultArray;
|
||
|
|
[self.navigationController pushViewController:vc animated:YES];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#pragma mark - UICollectionViewDelegate,UICollectionViewDataSource
|
||
|
|
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||
|
|
return self.dataArray.count;
|
||
|
|
}
|
||
|
|
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||
|
|
QXSearchCell *cell = [QXSearchCell cellWithCollectionView:collectionView forIndexPath:indexPath];
|
||
|
|
cell.titleLabel.text = self.dataArray[indexPath.row];
|
||
|
|
return cell;
|
||
|
|
}
|
||
|
|
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||
|
|
return CGSizeMake([self.dataArray[indexPath.row] boundingRectWithSize:CGSizeMake(1000000, 22) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:12]} context:nil].size.width + 20, 22);
|
||
|
|
}
|
||
|
|
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
|
||
|
|
if ([kind isEqualToString : UICollectionElementKindSectionHeader]){
|
||
|
|
QXSearchHeaderView* headerView = [QXSearchHeaderView headerViewWithCollectionView:collectionView forIndexPath:indexPath];
|
||
|
|
headerView.title = QXText(@"历史记录");
|
||
|
|
return headerView;
|
||
|
|
}
|
||
|
|
return nil;
|
||
|
|
}
|
||
|
|
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
|
||
|
|
return CGSizeMake(SCREEN_WIDTH, 24);
|
||
|
|
}
|
||
|
|
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
|
||
|
|
return UIEdgeInsetsMake(12, 16, 12, 16);
|
||
|
|
}
|
||
|
|
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||
|
|
NSString *keywords = self.dataArray[indexPath.row];
|
||
|
|
[self searchActionWithKeywords:keywords];
|
||
|
|
}
|
||
|
|
-(UICollectionView *)collectionView{
|
||
|
|
if (!_collectionView) {
|
||
|
|
ZLCollectionViewVerticalLayout *flowLayout = [[ZLCollectionViewVerticalLayout alloc] init];
|
||
|
|
flowLayout.delegate = self;
|
||
|
|
flowLayout.canDrag = NO;
|
||
|
|
flowLayout.isFloor = NO;
|
||
|
|
flowLayout.header_suspension = NO;
|
||
|
|
flowLayout.columnSortType = Sequence;
|
||
|
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, self.topView.bottom+12, SCREEN_WIDTH, SCREEN_HEIGHT-self.topView.bottom-12) collectionViewLayout:flowLayout];
|
||
|
|
_collectionView.delegate = self;
|
||
|
|
_collectionView.dataSource = self;
|
||
|
|
_collectionView.backgroundColor = [UIColor clearColor];
|
||
|
|
[_collectionView registerClass:[QXSearchHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:[QXSearchHeaderView headerViewIdentifier]];
|
||
|
|
[_collectionView registerClass:[QXSearchCell class] forCellWithReuseIdentifier:[QXSearchCell cellIdentifier]];
|
||
|
|
_collectionView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
|
||
|
|
}
|
||
|
|
return _collectionView;
|
||
|
|
}
|
||
|
|
-(QXSearchTopView *)topView{
|
||
|
|
if (!_topView) {
|
||
|
|
_topView = [[QXSearchTopView alloc] initWithFrame:CGRectMake(0, kSafeAreaTop, SCREEN_WIDTH, NavHeight)];
|
||
|
|
_topView.delegate = self;
|
||
|
|
}
|
||
|
|
return _topView;
|
||
|
|
}
|
||
|
|
-(NSMutableArray *)resultArray{
|
||
|
|
if (!_resultArray) {
|
||
|
|
_resultArray = [NSMutableArray array];
|
||
|
|
}
|
||
|
|
return _resultArray;
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|