iOS开发-UI (九)UITableView搜索功能

知识点:

1.UITableView搜索功能

<UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating,UISearchControllerDelegate>

=======================

UITableView搜索功能

    1.UISearchController

搜索控制器

@property (nonatomic,strong)UITableView *tableView;//表格视图

@property (nonatomic,strong)NSMutableArray *dataArr;//数据源数组

@property (nonatomic,strong)UISearchController *searchCtl;//搜索

 

 

2.创建方式

- (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController;

//实例化一个ResultViewController

    ResultViewController *ctl = [ResultViewController new];

    NSLog(@"ctl = %p",ctl);

    //实例化一个搜索控制器

    //参数:需要提供一个展示结果的控制器

    self.searchCtl = [[UISearchController alloc] initWithSearchResultsController:ctl];

 

 

3.@property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation;

作用:在搜索的时候使底色变暗

//去掉变暗效果

    self.searchCtl.dimsBackgroundDuringPresentation = NO;

 

4.可遵循的协议代理

1)UISearchResultsUpdating

2)UISearchControllerDelegate

//设置代理

    self.searchCtl.searchResultsUpdater = self;

    self.searchCtl.delegate = self;

 

5.代理方法

1)- (void)updateSearchResultsForSearchController:(UISearchController *)searchController;

调用时机:当搜索框的输入内容改变的时候

#pragma mark- UISearchResultsUpdating

//进入编辑模式或者搜索输入框内容发生改变的时候,都会回调以下方法

-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{

    //取得展示搜索结果的控制器对象

    ResultViewController *resultCtl = (ResultViewController *)searchController.searchResultsController;

    NSLog(@"resultCtl = %p",resultCtl);

    //清空数组

    [resultCtl.saveArr removeAllObjects];

    for (NSString *name in self.dataArr) {

        //判断name当中是否包含了searchBar.text

        if ([name containsString:searchController.searchBar.text]) {

            [resultCtl.saveArr addObject:name];
        }
    }
    //刷新UI
    [resultCtl.resultTableView reloadData];
}

 

2)- (void)didDismissSearchController:(UISearchController *)searchController

调用时机:当退出搜索模式的时候

//退出搜索模式

-(void)didDismissSearchController:(UISearchController *)searchController{

    //切换成非搜索模式

    self.isSearch = NO;
    //刷新UI
    [self.tableView reloadData];
}

 

 

6.UISearchBar

搜索框

//设置searchBar此搜索输入框为表格视图的头部视图

    self.tableView.tableHeaderView = self.searchCtl.searchBar;

 

 

1)sizeToFit

作用:UIView根据自己的内容来变化Frame的大小

//根据内容自动匹配本身的大小

    [self.searchCtl.searchBar sizeToFit];

 

2)placeholder

作用:文字提示

//设置文字提示

    self.searchCtl.searchBar.placeholder = @"请输入关键字";

 

3)barTintColor

作用:输入框的背景色

//背景色

    self.searchCtl.searchBar.barTintColor = [UIColor cyanColor];

 

posted @ 2017-02-08 21:42  CUG  阅读(1800)  评论(0编辑  收藏  举报