搜索历史本地保存

效果图

搜索历史本地保存_第1张图片


//创建属性

@interfaceDFWSearchViewController()

@property(nonatomic,strong)UISearchBar*searchBar;

@property(nonatomic,strong)UICollectionView*myCollectionView;

@property(nonatomic,strong)NSMutableArray*searchHistoryArray;

@end

//.m UI布局

- (void)viewDidLoad {

[superviewDidLoad];

self.view.backgroundColor= [UIColorwhiteColor];

//

NSUserDefaults*user = [NSUserDefaultsstandardUserDefaults];

_searchHistoryArray= [usermutableArrayValueForKey:@"historyArray"];

//

self.navView.hidden=YES;

_searchBar= [[UISearchBaralloc]initWithFrame:CGRectMake(0,20,kScreenWidth,40)];

_searchBar.searchBarStyle=UISearchBarStyleMinimal;

_searchBar.showsCancelButton=YES;

_searchBar.placeholder=@"请输入搜索内容";

_searchBar.delegate=self;

_searchBar.keyboardType=UIKeyboardTypeNamePhonePad;

[self.viewaddSubview:_searchBar];

//

UILabel*historyLabel = [[UILabelalloc]initWithFrame:CGRectMake(20,CGRectGetMaxY(_searchBar.frame) +10,100,20)];

historyLabel.text=@"搜索历史";

[self.viewaddSubview:historyLabel];

UIButton*deleteBtn = [UIButtonbuttonWithType:UIButtonTypeCustom];

deleteBtn.frame=CGRectMake(kScreenWidth-35,CGRectGetMinY(historyLabel.frame),15,15);

[deleteBtnsetImage:[UIImageimageNamed:@"delete"]forState:UIControlStateNormal];

[deleteBtnaddTarget:selfaction:@selector(delegateBtnAction:)forControlEvents:UIControlEventTouchUpInside];

[self.viewaddSubview:deleteBtn];

//

UICollectionViewFlowLayout*layout = [[UICollectionViewFlowLayoutalloc]init];

layout.scrollDirection=UICollectionViewScrollDirectionVertical;

layout.itemSize=CGSizeMake(80,30);

layout.sectionInset=UIEdgeInsetsMake(1,1,1,1);

layout.minimumInteritemSpacing=1;

layout.minimumLineSpacing=1;

self.myCollectionView= [[UICollectionViewalloc]initWithFrame:CGRectMake(20,CGRectGetMaxY(historyLabel.frame) +10,kScreenWidth-40,kScreenHeight-CGRectGetMaxY(historyLabel.frame) -10)collectionViewLayout:layout];

self.myCollectionView.delegate=self;

self.myCollectionView.dataSource=self;

self.myCollectionView.backgroundColor= [UIColorclearColor];

//注册item

[self.myCollectionViewregisterClass:[SearchHistoryCollectionViewCellclass]forCellWithReuseIdentifier:@"kitemCellid"];

[self.viewaddSubview:self.myCollectionView];

}

//以下是本文重点,每搜索一次 把搜索的文本存入本地。判断是否重复。

- (void)searchBarSearchButtonClicked:(UISearchBar*)searchBar

{

NSUserDefaults*user = [NSUserDefaultsstandardUserDefaults];

NSMutableArray*searchArray = [userobjectForKey:@"historyArray"];

if(!searchArray) {

NSMutableArray*searchArray = [NSMutableArraynew];

NSMutableArray*mutableCopyArr = [searchArraymutableCopy];

[mutableCopyArraddObject:searchBar.text];

[usersetObject: mutableCopyArrforKey:@"historyArray"];

NSString*str =searchBar.text;

}else{

NSMutableArray*mutableCopyArr = [searchArraymutableCopy];

BOOLisbool = [mutableCopyArrcontainsObject: searchBar.text];

if(isbool ==YES) {

NSLog(@"已存储%@", mutableCopyArr);

}else{

[mutableCopyArraddObject:searchBar.text];

[usersetObject: mutableCopyArrforKey:@"historyArray"];

}

NSString*str =searchBar.text;

}

[self.myCollectionViewreloadData];

[self.viewendEditing:YES];

}

-(void)searchBarCancelButtonClicked:(UISearchBar*)searchBar{

NSLog(@"取消");

searchBar.text=@"";

[searchBarresignFirstResponder];

[self.navigationControllerpopViewControllerAnimated:YES];

}

//剩下的就是实现collectionview了

#pragma mark - UICollectionViewDelegate , UICollectionViewDataSource 代理方法

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView

{

return1;

}

-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath {

returnCGSizeMake(70,20);

}

- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section

{

return_searchHistoryArray.count;

}

- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath

{

//我再这个地方粗心了,直接用的系统的cell,导致文本字体重叠,最后自定义了cell解决了这个问题。

SearchHistoryCollectionViewCell*cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"kitemCellid"forIndexPath:indexPath];

cell.label.text= [NSStringstringWithFormat:@"%@", [self.searchHistoryArrayobjectAtIndex:indexPath.row]];

returncell;

}

- (void)collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath*)indexPath

{

NSLog(@"搜索历史记录");

NSString*key = [NSStringstringWithFormat:@"%@", [self.searchHistoryArrayobjectAtIndex:indexPath.row]];

self.searchBar.text= key;

}

你可能感兴趣的:(搜索历史本地保存)