//
|
// PBProjectSearchView.m
|
// IphoneBIMe
|
//
|
// Created by zjf on 2020/6/5.
|
// Copyright © 2020 ProBIM. All rights reserved.
|
//
|
|
#import "PBProjectSearchView.h"
|
#import "MSSAutoresizeLabelFlow.h"
|
#import "PBProjectTableViewCell.h"
|
#import "PBProjectModel.h"
|
#import "PBTabBarController.h"
|
@interface PBProjectSearchView()<UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate>
|
@property(nonatomic,strong)MSSAutoresizeLabelFlow *historicalRecordV;
|
@property (nonatomic, strong) UITableView *tableView;
|
@property (nonatomic, strong) NSArray *dataList;
|
@property (nonatomic, weak) UISearchBar *searchBar;
|
@end
|
@implementation PBProjectSearchView
|
- (instancetype)initWithFrame:(CGRect)frame {
|
if (self = [super initWithFrame:frame]) {
|
[self setupUI];
|
}
|
return self;
|
}
|
- (void)setupUI {
|
self.backgroundColor = [UIColor whiteColor];
|
UIImageView *searchBg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search_bg"]];
|
[self addSubview:searchBg];
|
[searchBg mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(self);
|
make.left.equalTo(self).offset(10);
|
make.right.equalTo(self).offset(-10);
|
make.height.equalTo(@46);
|
}];
|
|
UIButton *backBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"arrow_left"]];
|
[backBtn addTarget:self action:@selector(backActon) forControlEvents:UIControlEventTouchUpInside];
|
[self addSubview:backBtn];
|
[backBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(searchBg).offset(10);
|
make.left.equalTo(searchBg).offset(10);
|
make.size.mas_equalTo(CGSizeMake(24, 24));
|
}];
|
UISearchBar *searchBar = [[UISearchBar alloc] init];
|
[searchBar setImage:[[UIImage alloc] init] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
|
searchBar.backgroundColor = [UIColor clearColor];
|
searchBar.backgroundImage = [[UIImage alloc]init];
|
if (@available(iOS 13.0, *)){
|
searchBar.searchTextField.backgroundColor = UIColor.clearColor;
|
}else{
|
UITextField*searchField = [searchBar valueForKey:@"_searchField"];
|
searchField.backgroundColor = UIColor.clearColor;
|
}
|
searchBar.placeholder = @"搜索";
|
searchBar.delegate = self;
|
[self addSubview:searchBar];
|
[searchBar mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.centerY.equalTo(searchBg);
|
make.left.equalTo(searchBg).offset(34);
|
make.right.equalTo(searchBg).offset(-10);
|
make.height.equalTo(@46);
|
}];
|
[searchBar becomeFirstResponder];
|
self.searchBar = searchBar;
|
UIView *linV = [[UIView alloc] init];
|
linV.backgroundColor = PBColor(244, 245, 246);
|
[self addSubview:linV];
|
[linV mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(searchBg.mas_bottom).offset(15);
|
make.left.right.equalTo(self);
|
make.height.equalTo(@6);
|
}];
|
UILabel *historyL = [UILabel z_labelWithText:@"搜索历史" Color:PBColor(40, 58, 79) isBold:YES Font:16];
|
[self addSubview:historyL];
|
[historyL mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(linV.mas_bottom).offset(15);
|
make.left.equalTo(self).offset(15);
|
make.size.mas_equalTo(CGSizeMake(68, 24));
|
}];
|
UIButton *clearBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"delete"]];
|
[clearBtn addTarget:self action:@selector(clearhistory) forControlEvents:UIControlEventTouchUpInside];
|
[self addSubview:clearBtn];
|
[clearBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.centerY.equalTo(historyL);
|
make.right.equalTo(self).offset(-18);
|
make.size.mas_equalTo(CGSizeMake(24, 24));
|
}];
|
NSArray *array = [self readSearchHistory];
|
_historicalRecordV = [[MSSAutoresizeLabelFlow alloc] initWithFrame:CGRectMake(0, 150, PBScreenWidth, 200) titles:array selectedHandler:^(NSUInteger index, NSString *title) {
|
NSLog(@"%@",title);
|
self.searchBar.text = title;
|
[self searchActionWithTitle:title];
|
}];
|
[self addSubview:_historicalRecordV];
|
[self addSubview:self.tableView];
|
self.tableView.hidden = YES;
|
}
|
- (void)searchActionWithTitle:(NSString *)title {
|
[self.searchBar resignFirstResponder];
|
self.tableView.hidden = NO;
|
[self loadProjectList];
|
NSArray *arr = [self readSearchHistory];
|
NSMutableArray *arrM = [[NSMutableArray alloc] init];
|
for (NSString *obj in arr) {
|
if (![obj isEqualToString:title]) {
|
[arrM addObject:obj];
|
}
|
}
|
[arrM insertObject:title atIndex:0];
|
[self writeSearchHistoryWithData:arrM.copy];
|
[self.historicalRecordV reloadAllWithTitles:arrM.copy];
|
}
|
- (void)backActon {
|
if (self.cancelSearchBlock) {
|
self.cancelSearchBlock();
|
}
|
}
|
- (void)clearhistory {
|
[self deleteSearchHistory];
|
}
|
#pragma makr - UISearchBarDelegate
|
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
|
[self searchActionWithTitle:searchBar.text];
|
}
|
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
|
if (!self.tableView.hidden) {
|
self.tableView.hidden = YES;
|
}
|
}
|
- (void)loadProjectList {
|
// [YJProgressHUD showCustomAnimation:@"" inview:self];
|
[YJProgressHUD showProgress:@"" inView:self];
|
[[PBNetworkTools sharedTools] getProjectListWithKeyword:self.searchBar.text andIsPublic:@"" andSort:@"CreateDate desc" andSkip:@"0" andtake:@"999" andOnlyFavorite:@"" andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if(error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"加载项目列表失败" inView:self];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
self.dataList = [NSArray yy_modelArrayWithClass:[PBProjectModel class] json:[networkModel.Data valueForKey:@"rows"]];
|
[self.tableView reloadData];
|
}else {
|
[YJProgressHUD showMessage:networkModel.Msg inView:self];
|
}
|
}];
|
}
|
#pragma mark - tableViewDelegate
|
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
|
{
|
return 1;
|
}
|
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
{
|
return self.dataList.count;
|
}
|
|
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
|
{
|
return 120;
|
}
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
{
|
static NSString *cellId = @"cellId";
|
PBProjectTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
if (!cell)
|
cell = [[PBProjectTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
|
cell.projectModel = self.dataList[indexPath.row];
|
return cell;
|
}
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
PBProjectModel *projectModel = self.dataList[indexPath.row];
|
if (self.projectDetailBlock) {
|
self.projectDetailBlock(projectModel);
|
}
|
}
|
#pragma mark - GET
|
|
- (UITableView *)tableView {
|
if (!_tableView)
|
{
|
CGFloat bottomViewH = 71.f - 20;
|
if (IS_IPHONE_X) {
|
bottomViewH = bottomViewH + IPHONE_X_BOTTOM;
|
}
|
_tableView = [[UITableView alloc] init];
|
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
_tableView.delegate = self;
|
_tableView.dataSource = self;
|
[self addSubview:_tableView];
|
[_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(self).offset(67);
|
make.left.right.bottom.equalTo(self);
|
make.bottom.equalTo(self).offset(-bottomViewH);
|
}];
|
}
|
return _tableView;
|
}
|
|
#pragma mark - 读取本地历史记录
|
-(NSArray *)readSearchHistory
|
{
|
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
NSString *documents = [array lastObject];
|
NSString *documentPath = [documents stringByAppendingPathComponent:@"searchHistory.plist"];
|
NSArray *arr = [[NSArray alloc]initWithContentsOfFile:documentPath];
|
return arr;
|
}
|
#pragma mark - 删除本地历史记录
|
-(void)deleteSearchHistory {
|
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
NSString *documents = [array lastObject];
|
NSString *documentPath = [documents stringByAppendingPathComponent:@"searchHistory.plist"];
|
NSFileManager *fileManager = [NSFileManager defaultManager];
|
[fileManager removeItemAtPath:documentPath error:nil];
|
[self.historicalRecordV reloadAllWithTitles:@[]];
|
}
|
#pragma mark - 插入本地历史记录
|
- (void)writeSearchHistoryWithData:(NSArray *)history {
|
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
NSString *documents = [array lastObject];
|
NSString *documentPath = [documents stringByAppendingPathComponent:@"searchHistory.plist"];
|
[history writeToFile:documentPath atomically:YES];
|
}
|
/*
|
// Only override drawRect: if you perform custom drawing.
|
// An empty implementation adversely affects performance during animation.
|
- (void)drawRect:(CGRect)rect {
|
// Drawing code
|
}
|
*/
|
|
@end
|