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

 

转载于:https://www.cnblogs.com/fcug/p/6379987.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值