• IOS UI-UISearchController


    ViewController.m
      1 //
      2 //  ViewController.m
      3 //  IOS_0224_查找联系人
      4 //
      5 //  Created by ma c on 16/2/24.
      6 //  Copyright © 2016年 博文科技. All rights reserved.
      7 //
      8 
      9 #import "ViewController.h"
     10 #import "SearchResultsVC.h"
     11 
     12 @interface ViewController ()<UITableViewDataSource>
     13 
     14 @property (nonatomic, strong) UITableView *tableView;
     15 @property (nonatomic, strong) NSArray *keys;
     16 @property (nonatomic, strong) NSDictionary *dict;
     17 
     18 @property (nonatomic, strong) UISearchController *searchCtr;
     19 
     20 @end
     21 
     22 @implementation ViewController
     23 
     24 - (void)viewDidLoad {
     25     [super viewDidLoad];
     26     [self createUI];
     27     
     28 }
     29 
     30 - (NSArray *)keys
     31 {
     32     if (_keys == nil) {
     33         NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];
     34         self.dict = [NSDictionary dictionaryWithContentsOfFile:path];
     35         _keys = [[self.dict allKeys] sortedArrayUsingSelector:@selector(compare:)];
     36     }
     37     return _keys;
     38 }
     39 
     40 - (NSDictionary *)dict
     41 {
     42     if (_dict == nil) {
     43         NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];
     44         self.dict = [NSDictionary dictionaryWithContentsOfFile:path];
     45     }
     46     return _dict;
     47 }
     48 
     49 - (void)createUI
     50 {
     51     [self setupTableView];
     52     [self setupSearchVC];
     53 }
     54 
     55 - (void)setupTableView
     56 {
     57     self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
     58     self.tableView.backgroundColor = [UIColor groupTableViewBackgroundColor];
     59     self.tableView.dataSource = self;
     60     [self.view addSubview:self.tableView];
     61 }
     62 
     63 - (void)setupSearchVC
     64 {
     65     SearchResultsVC *resultVC = [[SearchResultsVC alloc] initWithDict:self.dict keys:self.keys];
     66     self.searchCtr = [[UISearchController alloc] initWithSearchResultsController:resultVC];
     67     
     68     self.searchCtr.searchResultsUpdater = resultVC;
     69 
     70     self.searchCtr.searchBar.placeholder = @"请输入搜索内容";
     71     [self.searchCtr.searchBar sizeToFit];
     72     self.tableView.tableHeaderView = self.searchCtr.searchBar;
     73 }
     74 
     75 #pragma mark - UITableViewDataSource
     76 
     77 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
     78 {
     79     return self.keys.count;
     80 }
     81 
     82 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     83 {
     84     NSString *key = self.keys[section];
     85     NSArray *value = self.dict[key];
     86     
     87     return [value count];
     88 }
     89 
     90 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     91 {
     92     static NSString *identifier = @"cellIdentifier";
     93     
     94     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
     95     
     96     if (!cell) {
     97         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
     98     }
     99     NSString *key = self.keys[indexPath.section];
    100     NSArray *value = self.dict[key];
    101 
    102     cell.textLabel.text = value[indexPath.row];
    103     return cell;
    104 }
    105 
    106 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    107 {
    108     return self.keys[section];
    109 }
    110 - (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView
    111 {
    112     return self.keys;
    113 }
    114 
    115 @end
    SearchResultsVC.m
     1 //
     2 //  SearchResultsVC.m
     3 //  IOS_0224_查找联系人
     4 //
     5 //  Created by ma c on 16/2/24.
     6 //  Copyright © 2016年 博文科技. All rights reserved.
     7 //
     8 
     9 #import "SearchResultsVC.h"
    10 
    11 @interface SearchResultsVC ()
    12 
    13 @property (strong, nonatomic) NSDictionary *dict;
    14 @property (strong, nonatomic) NSArray *keys;
    15 @property (strong, nonatomic) NSMutableArray *searchList;
    16 
    17 @end
    18 
    19 @implementation SearchResultsVC
    20 
    21 - (instancetype)initWithDict:(NSDictionary *)dict keys:(NSArray *)keys {
    22     if (self = [super initWithStyle:UITableViewStylePlain]) {
    23         self.dict = dict;
    24         self.keys = keys;
    25         self.searchList = [[NSMutableArray alloc] init];
    26     }
    27     return self;
    28 }
    29 
    30 - (void)viewDidLoad {
    31     [super viewDidLoad];
    32 }
    33 
    34 - (void)updateSearchResultsForSearchController:(UISearchController *)searchController
    35 {
    36     NSString *searchString = [searchController.searchBar text];
    37     NSLog(@"searchString:%@",searchString);
    38     [self.searchList removeAllObjects];
    39     
    40     if (searchString.length > 0) {
    41 
    42 //        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@",searchString];
    43         NSPredicate *predicate =
    44         [NSPredicate predicateWithBlock:^BOOL(id  _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
    45             
    46             NSRange range = [evaluatedObject rangeOfString:searchString
    47                                         options:NSCaseInsensitiveSearch];
    48             
    49             return range.location != NSNotFound;
    50         }];
    51 
    52         for (NSString *key in self.keys) {
    53             NSArray *matches = [self.dict[key]
    54                                 filteredArrayUsingPredicate: predicate];
    55             [self.searchList addObjectsFromArray:matches];
    56         }
    57         [self.tableView reloadData];
    58     }
    59 }
    60 
    61 #pragma mark - UITableViewDataSource
    62 
    63 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    64     return [self.searchList count];
    65 }
    66 
    67 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    68     
    69     static NSString *identifier = @"cellIdentifier";
    70     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    71     
    72     if (!cell) {
    73         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
    74     }
    75     cell.textLabel.text = self.searchList[indexPath.row];
    76     return cell;
    77 }
    78 @end
  • 相关阅读:
    系统分析师考试
    系统分析师
    软件设计师考试
    海恩法则”的启示:制度不落到实处事故必发
    eclipse下生成Java类图和时序图,生成UML图
    bzoj4010【HNOI2015】菜肴制作
    atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
    【数据结构和算法16】堆排序
    这一路走来,冷暖自知 (附算法demos)
    c++实现二叉搜索树
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5216732.html
Copyright © 2020-2023  润新知