zoukankan      html  css  js  c++  java
  • UISearchController 搜索

    UISearchController实现搜索

    通过 UISearchController 实现 UISearchResultsUpdating 这个委托实现上面的效果;

    视图中中需要声明UISearchResultsUpdating:

    @interface ViewController : UITableViewController<UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate,UISearchResultsUpdating>
    
    
    @end

    属性声明:

    @property (nonatomic, strong) UISearchController *searchController;

    需要自己初始化一下UISearchController:

    _searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    	_searchController.searchResultsUpdater = self;
    	_searchController.dimsBackgroundDuringPresentation = NO;
    	_searchController.hidesNavigationBarDuringPresentation = NO;
    	_searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
    	self.tableView.tableHeaderView = self.searchController.searchBar;
    

    之前是通过判断搜索时候的TableView,不过现在直接使用self.searchController.active进行判断即可,也就是UISearchController的active属性:

    //设置区域的行数
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    			if (self.searchController.active) {
    				return [self.searchList count];
    			}else{
    				return [self.dataList count];
    			}
    }
    //返回单元格内容
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    	static NSString *flag=@"cellFlag";
    	UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:flag];
    	if (cell==nil) {
    		cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:flag];
    	}
    	if (self.searchController.active) {
    		[cell.textLabel setText:self.searchList[indexPath.row]];
    	}
    	else{
    		[cell.textLabel setText:self.dataList[indexPath.row]];
    	}
    	return cell;
    }
    

    具体调用的时候使用的方法也发生了改变,这个时候使用updateSearchResultsForSearchController进行结果过滤:

    -(void)updateSearchResultsForSearchController:(UISearchController *)searchController {
    	NSString *searchString = [self.searchController.searchBar text];
    	NSPredicate *preicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@", searchString];
    	if (self.searchList!= nil) {
    		[self.searchList removeAllObjects];
    	}
    	//过滤数据
    	self.searchList= [NSMutableArray arrayWithArray:[_dataList filteredArrayUsingPredicate:preicate]];
    	//刷新表格
    	[self.tableView reloadData];
    }
    

    效果演示:

  • 相关阅读:
    SAS-决策树模型
    sas 9.4 sid 64bit 到期时间210804 带有EM
    PROC IMPORT 选项
    删除文件夹下各级子目录中的.svn文件
    SAS PROC PRINT 常用选项和语句说明
    SAS 评分卡开发模型变量统计及输出
    Symbol类型是不可枚举的
    将类设置为等于其他类/函数构造函数
    js原生方法promise的实现
    或与非优先级
  • 原文地址:https://www.cnblogs.com/daxueshan/p/6029166.html
Copyright © 2011-2022 走看看