美文网首页
搜索历史本地保存

搜索历史本地保存

作者: 小柴2011 | 来源:发表于2017-04-26 16:09 被阅读32次

    效果图

    //创建属性

    @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;

    }

    相关文章

      网友评论

          本文标题:搜索历史本地保存

          本文链接:https://www.haomeiwen.com/subject/kynizttx.html