美文网首页
iOS中搜索框EVNCustomSearchBar使用小结

iOS中搜索框EVNCustomSearchBar使用小结

作者: 奔跑的小蚂蚁_8b28 | 来源:发表于2021-08-13 08:35 被阅读0次

    最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法。

    第一步:引入添加相关的委托代理EVNCustomSearchBarDelegate,懒加载初始化对象

    if (!_searchBar) {

        _searchBar = [[EVNCustomSearchBar alloc] initWithFrame:CGRectMake(16, 0, K_CC_SCREEN_WIDTH-32, 44)];
    
        _searchBar.backgroundColor = K_CC_COLOR_STRING(@"#F5F5F5");
    
        _searchBar.textColor = K_CC_COLOR_STRING(@"#999999");
    
        _searchBar.textFieldColor = [UIColor clearColor];
    
        _searchBar.iconImage = K_CC_IMAGE(@"newhome_search");
    
        _searchBar.iconAlign = EVNCustomSearchBarIconAlignCenter;
    
        [_searchBar setPlaceholder:K_CC_LOCAL_STR(@"home.search")];// 搜索框的占位符
    
        _searchBar.placeholderColor = K_CC_COLOR_STRING(@"#999999");
    
        _searchBar.delegate = self; //设置代理
    
        _searchBar.isHiddenCancelButton = YES;
    
        _searchBar.tintColor = K_CC_COLOR_STRING(@"#999999");
    
        [_searchBar sizeToFit];
    
        
    
    }
    
    return _searchBar;
    

    第二步:添加到相应的view上

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, K_CC_SCREEN_WIDTH, 44)];

    headerView.backgroundColor = [UIColor clearColor];
    
    [headerView addSubview:self.searchBar];
    
    self.distributeTable.tableHeaderView = headerView;
    

    第三步:添加相关的搜索代理逻辑处理

    pragma mark - EVNCustomSearchBarDelegate -

    • (void)searchBar:(EVNCustomSearchBar *)searchBar textDidChange:(NSString *)searchText {

      if (searchText.length > 0) {

        // 根据模型属性搜索结果
      
        self.searchList=[NSMutableArray arrayWithArray:[[NDSearchTool tool] searchWithFieldArray:@[@"username"] inputString:searchText inArray:self.dataAddressList]];
      
        self.isSearch = YES;
      

      }else{

        self.isSearch = NO;
      
        self.currentSeasSearchItem=-1;
      
        //清空搜索内容Id
      
        [self.searchList removeAllObjects];
      

      }

      [self.distributeTable reloadData];

    }

    • (NSArray *)searchWithFieldArray:(NSArray *)fieldArray

                      inputString:(NSString *)inputString
      
                          inArray:(NSArray *)array
      

    {

    if (![array count] || ![fieldArray count])
    
    {
    
        return nil;
    
    }
    
    
    
    NSPredicate *scopePredicate;
    
    NSMutableArray *backArray = [NSMutableArray array];
    
    
    
    for (NSString *fieldString in fieldArray)
    
    {
    
        NSArray *tempArray;
    
        scopePredicate = [NSPredicate predicateWithFormat:@"SELF.%@ contains[c] %@", fieldString, inputString];
    
        tempArray = [array filteredArrayUsingPredicate:scopePredicate];
    
        
    
        for (NSObject *object in tempArray)
    
        {
    
            if (![backArray containsObject:object])
    
            {
    
                [backArray nd_addObj:object];
    
            }
    
        }
    
    }
    
    
    
    return backArray;
    

    }

    完成这些就可以实现动态的模糊搜索,大功告成。

    相关文章

      网友评论

          本文标题:iOS中搜索框EVNCustomSearchBar使用小结

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