博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UISerachBar / UISearchDisplayController
阅读量:5457 次
发布时间:2019-06-15

本文共 3269 字,大约阅读时间需要 10 分钟。

1. UISerachBar 

继承与UIView, 包含uitextfield, 并且实现了uitextfielddelegate代理的主要内容

含有取消按钮, 默认不显示

2. UISerachDisplayController

包含 uisearchbar, uitableview, uinavigaitionitem 以及 uiviewcontroller

每一个uiviewcontroller有一个类型为UISerachDisplayController的属性, 但默认为nil

demo:

#import 
@interface MainViewController : UITableViewController{ NSArray *data; NSArray *filterData; UISearchDisplayController *searchDisplayController;}@end
#import "MainViewController.h"@interface MainViewController ()@end@implementation MainViewController- (id)initWithStyle:(UITableViewStyle)style{    self = [super initWithStyle:style];    if (self) {        data = [NSArray arrayWithObjects:@"Allan",@"Abbbb",@"Acccc",@"Bccccc",@"Cddddffk",@"Cddkllll",@"Ekkflfl",@"Ekljljfg" ,@"Leslie",@"Mm",@"Meinv",@"Meihi",@"Catilin",@"Arron", nil];    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width                                                                           , 44)];    searchBar.placeholder = @"搜索";        // 添加 searchbar 到 headerview    self.tableView.tableHeaderView = searchBar;        // 用 searchbar 初始化 SearchDisplayController    // 并把 searchDisplayController 和当前 controller 关联起来    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];        // searchResultsDataSource 就是 UITableViewDataSource    searchDisplayController.searchResultsDataSource = self;    // searchResultsDelegate 就是 UITableViewDelegate    searchDisplayController.searchResultsDelegate = self;}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];}#pragma mark - Table view data source- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return 1;}/* * 如果原 TableView 和 SearchDisplayController 中的 TableView 的 delete 指向同一个对象 * 需要在回调中区分出当前是哪个 TableView */- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    if (tableView == self.tableView) {        return data.count;    }else{        // 谓词搜索        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains [cd] %@",searchDisplayController.searchBar.text];        filterData =  [[NSArray alloc] initWithArray:[data filteredArrayUsingPredicate:predicate]];        return filterData.count;    }}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString *cellId = @"mycell";    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];        if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];    }        if (tableView == self.tableView) {        cell.textLabel.text = data[indexPath.row];    }else{        cell.textLabel.text = filterData[indexPath.row];    }        return cell;}-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSString *text;        if (tableView == self.tableView) {        text = data[indexPath.row];    }else{        text = filterData[indexPath.row];    }        NSLog(@"you click %d   %@",indexPath.row,text);}@end

 

转载于:https://www.cnblogs.com/apem/p/4522416.html

你可能感兴趣的文章
BASIC-24_蓝桥杯_龟兔赛跑预测
查看>>
C# 中使用Linq和Lambda表达式对List<T>进行排序
查看>>
offsetHeight, clientHeight与scrollHeight的区别
查看>>
002-python基础-hello-world
查看>>
WPF复杂形状按钮
查看>>
谈一谈循环的性能提升
查看>>
为vsftpd 本地用户指定目录
查看>>
codevs1222 信与信封的问题
查看>>
登录界面 动画背景效果
查看>>
B.xml
查看>>
支付宝(Alipay)支付,超详细使用教程讲解!
查看>>
《余额宝技术架构及演进》读后感
查看>>
手机滑动应用
查看>>
Dispose() C# 优化内存
查看>>
堆排序
查看>>
线程池实现多线程
查看>>
js如何模拟multipart/form-data类型的请求
查看>>
Gibbs 采样定理的若干证明
查看>>
3. Longest Substring Without Repeating Characters
查看>>
织梦添加搜索功能
查看>>