iOS-基础控件--搜索栏 UISearchController

落花人独立,微雨燕双飞


#import "ViewController.h"
@interface ViewController ()<UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating >
// 遵循的两个协议尖括号里面
//下面是声明一个搜索栏
@property (nonatomic,strong) UISearchController *searchController;
//StoryBoard创建的tableView
@property (strong, nonatomic) IBOutlet UITableView *tableView;
//数据源数组
@property (nonatomic,strong) NSMutableArray *dataList;
//搜索到数据数组
@property (nonatomic,strong) NSMutableArray *searchList; @end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];      
 [self createSearchBar];       
[self createData];}`
- (void)createSearchBar{    
self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil]; 

//设置显示搜索的控制器
self.searchController.searchResultsUpdater = self;

//设置开始搜索时背景显示与否(default is YES) self.searchController.dimsBackgroundDuringPresentation = NO;

//展示时是否隐藏naviBar (default is YES) self.searchController.hidesNavigationBarDuringPresentation = NO;}
- (void)createData{
//将搜索栏设置为tableView的头部视图
self.tableView.tableHeaderView = self.searchController.searchBar;
//tableView代理
self.tableView.delegate = self; self.tableView.dataSource = self;
//初始化数据源数组
self.dataList = [NSMutableArray arrayWithCapacity:0]; for (NSInteger i = 0; i < 100; i++) { [self.dataList addObject:[NSString stringWithFormat:@"骚韦 %ld号",i]]; }}
//tableView @required

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{       
if (self.searchController.active) {        
return self.searchList.count;    }    
return self.dataList.count;}`


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];       
if (cell == nil) {       
 cell = [[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"cell"];    }   
 if  (self.searchController.active) {       
 [cell.textLabel setText:self.searchList[indexPath.row]];    }else{       
 [cell.textLabel setText:self.dataList[indexPath.row]];}    
return cell;}

//updataSearchTesultsForSearchController 进行过滤
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController{
//获取searchBar搜索的内容
NSString *searchString = self.searchController.searchBar.text;
//谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@", searchString];
//判断搜索数组是否为空
if (self.searchList != nil) { [self.searchList removeAllObjects]; }
//使用谓词过滤数据
self.searchList = [NSMutableArray arrayWithArray:[_dataList filteredArrayUsingPredicate:predicate]];
//刷新
[self.tableView reloadData];
} @end

下一篇是谓词的简单总结,希望大家多指正共同进步!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、searchBar 本例子实现布局:上面是一个navigationController,接下来一个search...
    lilinjianshu阅读 3,451评论 1 8
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,085评论 3 38
  • 作者唯一QQ:228544117。。。。。 =========后面的都要新建一个文章 AppDelegate.h ...
    CC_iOS阅读 924评论 0 0
  • //// AddressBookViewController.h// QRCodeScanApp//// Crea...
    奇怪的知识增加了阅读 318评论 0 0
  • 目录 上一节:杀人的人 二人打马狂奔,路上人迹越来越少。 “宣大哥,肚子饿了,有没有吃的?”石心停下马问。 “没有...
    MJ老段阅读 950评论 1 6