博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
带搜索栏的tableview
阅读量:6321 次
发布时间:2019-06-22

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

hot3.png

#import "ViewController.h"@interface ViewController ()
@property (nonatomic, strong) UITableView *myTableView;@property (nonatomic, strong) NSMutableArray *visableArray;@property (nonatomic, strong) NSMutableArray *filterArray;@property (nonatomic, strong) NSMutableArray *dataSourceArray;@property (nonatomic, strong) UISearchController *mySearchController;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];     [self initial];}- (void)initial{    self.dataSourceArray = [NSMutableArray array];    self.filterArray = [NSMutableArray array];    for (int i = 0; i < 26; i++) {        for (int j = 0; j < 4; j++) {            NSString *str = [NSString stringWithFormat:@"%c%d", 'A'+i, j];            [self.dataSourceArray addObject:str];        }    }        self.visableArray = self.dataSourceArray;        self.myTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];    _myTableView.delegate = self;    _myTableView.dataSource = self;    [self.view addSubview:_myTableView];    //nil为和当前视图总用一个视图    self.mySearchController = [[UISearchController alloc] initWithSearchResultsController:nil];    //searchResultsUpdater:设置显示搜索结果的控制器    _mySearchController.searchResultsUpdater = self;        /**     *   @author aiqing, 17-11-19 16:11:58     *如果不需要,刻意再创建一个如     UITableViewController *tableVC = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];          tableVC.tableView.delegate = self;     tableVC.tableView.dataSource = self;     [tableVC.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];     self.searchVC = [[UISearchController alloc] initWithSearchResultsController:tableVC];     *     */        //dimsBackgroundDuringPresentation设置开始搜索时背景显示与否    _mySearchController.dimsBackgroundDuringPresentation = YES;    //[searchBar sizeToFit]:设置searchBar位置自适应    [_mySearchController.searchBar sizeToFit];    //.设置searchBar为UITableView的头部视图    self.myTableView.tableHeaderView = self.mySearchController.searchBar;        //加上这个self.searchController.hidesNavigationBarDuringPresentation = NO;就不会自动隐藏导航了       // [self willPresentSearchController:self.mySearchController];}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    if (!_visableArray || _visableArray.count == 0) {        _visableArray = _dataSourceArray;    }    return _visableArray.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];        if (!cell) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"identifier"];    }        cell.textLabel.text = [_visableArray objectAtIndex:indexPath.row];        return cell;}/** *   @author aiqing, 17-11-19 15:11:55 * *   搜索功能的最重要一步了 * *   @param searchController 匹配搜索结果 */- (void)updateSearchResultsForSearchController:(UISearchController *)searchController{    NSString *filterString = searchController.searchBar.text;        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [c] %@", filterString];        self.visableArray = [NSMutableArray arrayWithArray:[self.dataSourceArray filteredArrayUsingPredicate:predicate]];        [self.myTableView reloadData];    /**     *   @author aiqing, 17-11-19 16:11:48     *     *   接上面自定义searchbar添加表视图     *     *   @param UITableViewController 重新加载数据源     *     *   @return 新的表示图     */    //最后搜索数据源变了  ->让搜索控制器 内部的结果视图控制器的tableView的刷新    //UITableViewController *tableVC = (UITableViewController *)searchController.searchResultsController;    //[tableVC.tableView reloadData];}- (void)willPresentSearchController:(UISearchController *)searchController {    NSLog(@"searchController 将要 显示");    }- (void)didPresentSearchController:(UISearchController *)searchController {    NSLog(@"searchController 已经 显示");}- (void)willDismissSearchController:(UISearchController *)searchController {    NSLog(@"searchController 将要 消失");}- (void)didDismissSearchController:(UISearchController *)searchController {    NSLog(@"searchController 已经 消失");}/** *   @author aiqing, 17-11-19 16:11:04 * *   !!如果需要页面跳转 在进行页面跳转的时候要注意现在有两个视图呀需要区分开 UIViewController *vc = nil; //self.presentedViewController获取已经模态跳转上册的视图控制器,如果dismiss 之后 这个值会变成nil if (self.presentedViewController) { //判断一下 当前视图控制器有没有 模态跳转 的视图,如果有 那么 做另外一个模态跳转的时候 应该用 上一个已经模态跳转的控制器进行 模态跳转下一个 vc = self.presentedViewController; }else { vc = self; } //模态跳转 [vc presentViewController:alert animated:YES completion:nil]; */

转载于:https://my.oschina.net/u/2365185/blog/532789

你可能感兴趣的文章
windows 与linux 下用C++读取sqlite实现文件复制(一)
查看>>
IOS 5 中为什么outlet 输出口总是设定成弱类型(weak)呢
查看>>
Read-Copy Update (RCU)
查看>>
基于centos系统,系统基本检查及巩固
查看>>
在以太坊上如何取消/修改已经提交的交易
查看>>
Android IOS WebRTC 音视频开发总结(十九)-- kurento
查看>>
reshape2 数据操作 数据融合( cast)
查看>>
第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
查看>>
八、主从复制
查看>>
深入理解RunLoop 整理资料
查看>>
俄罗斯方块
查看>>
LabVIEW将字符串转化为十进制
查看>>
欢迎光临
查看>>
20131205
查看>>
数组相减
查看>>
【poj 1962】Corporative Network(图论--带权并查集 模版题)
查看>>
使用AngularJS学习MVC的基础知识分享
查看>>
UDP template 代码
查看>>
爬虫 高性能
查看>>
使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(二)
查看>>