zoukankan      html  css  js  c++  java
  • UITableView + UISearchBar 实现搜索功能

    1 #import <UIKit/UIKit.h>
    2 
    3 @interface AppDelegate : UIResponder <UIApplicationDelegate>
    4 
    5 @property (strong, nonatomic) UIWindow *window;
    6 
    7 
    8 @end
     1 #import "AppDelegate.h"
     2 #import "RootViewController.h"
     3 @interface AppDelegate ()
     4 
     5 @end
     6 
     7 @implementation AppDelegate
     8 
     9 
    10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    11     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    12     // Override point for customization after application launch.
    13     self.window.backgroundColor = [UIColor whiteColor];
    14     
    15     self.window.rootViewController = [[RootViewController alloc] init];
    16     
    17     [self.window makeKeyAndVisible];
    18     return YES;
    19 }
    20 
    21 @end
    1 #import <UIKit/UIKit.h>
    2 
    3 @interface RootViewController : UIViewController
    4 
    5 @end
      1 #import "RootViewController.h"
      2 #import "YXPresident.h"
      3 #define Width [UIScreen mainScreen].bounds.size.width
      4 #define Height [UIScreen mainScreen].bounds.size.height
      5 #define gapHeight 20
      6 #define Sheight 50
      7 
      8 @interface RootViewController ()<UITableViewDataSource,UITableViewDelegate,UISearchDisplayDelegate,UISearchBarDelegate>
      9 
     10 @property (nonatomic, strong) UISearchBar *searchBar;
     11 @property (nonatomic, strong) UITableView *mTableView;
     12 @property (nonatomic, strong) NSArray *presidents;
     13 @property (nonatomic, strong) NSArray *filteredPresident;
     14 
     15 @end
     16 
     17 @implementation RootViewController
     18 
     19 - (void)loadView
     20 {
     21     [super loadView];
     22     // 初始化searchBar
     23     self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, gapHeight, Width, Sheight)];
     24     self.searchBar.delegate = self;
     25     
     26     [self.view addSubview:self.searchBar];
     27     // 初始化mTableView
     28     self.mTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, gapHeight+Sheight, Width, Height - Sheight - gapHeight) style:UITableViewStylePlain];
     29     self.mTableView.dataSource = self;
     30     self.mTableView.delegate = self;
     31     [self.view addSubview:self.mTableView];
     32 }
     33 /**
     34  * 初始化数组
     35  */
     36 - (void)viewDidLoad {
     37     [super viewDidLoad];
     38     self.presidents = [[NSArray alloc] initWithObjects:
     39                        [YXPresident presidentWithFirstName:@"George" lastName:@"Washington"],
     40                        [YXPresident presidentWithFirstName:@"John" lastName:@"Adams"],
     41                        [YXPresident presidentWithFirstName:@"Thomas" lastName:@"Jeffeson"],
     42                        [YXPresident presidentWithFirstName:@"James" lastName:@"Madison"],
     43                        [YXPresident presidentWithFirstName:@"James" lastName:@"Monroe"],
     44                        [YXPresident presidentWithFirstName:@"John Quincy" lastName:@"Adams"],
     45                        [YXPresident presidentWithFirstName:@"Andrew" lastName:@"Jackson"],
     46                        [YXPresident presidentWithFirstName:@"Martin" lastName:@"van Buren"],
     47                        [YXPresident presidentWithFirstName:@"William Henry" lastName:@"Harrison"],
     48                        [YXPresident presidentWithFirstName:@"John" lastName:@"Tyler"],
     49                        [YXPresident presidentWithFirstName:@"James K" lastName:@"Polk"],
     50                        [YXPresident presidentWithFirstName:@"Zachary" lastName:@"Taylor"],
     51                        [YXPresident presidentWithFirstName:@"Millard" lastName:@"Fillmore"],
     52                        [YXPresident presidentWithFirstName:@"Franklin" lastName:@"Pierce"],
     53                        [YXPresident presidentWithFirstName:@"James" lastName:@"Buchanan"],
     54                        [YXPresident presidentWithFirstName:@"Abraham" lastName:@"Lincoln"],
     55                        [YXPresident presidentWithFirstName:@"Andrew" lastName:@"Johnson"],
     56                        [YXPresident presidentWithFirstName:@"Ulysses S" lastName:@"Grant"],
     57                        [YXPresident presidentWithFirstName:@"Rutherford B" lastName:@"Hayes"],
     58                        [YXPresident presidentWithFirstName:@"James A" lastName:@"Garfield"],
     59                        [YXPresident presidentWithFirstName:@"Chester A" lastName:@"Arthur"],
     60                        [YXPresident presidentWithFirstName:@"Grover" lastName:@"Cleveland"],
     61                        [YXPresident presidentWithFirstName:@"Bejamin" lastName:@"Harrison"],
     62                        [YXPresident presidentWithFirstName:@"Grover" lastName:@"Cleveland"],
     63                        [YXPresident presidentWithFirstName:@"William" lastName:@"McKinley"],
     64                        [YXPresident presidentWithFirstName:@"Theodore" lastName:@"Roosevelt"],
     65                        [YXPresident presidentWithFirstName:@"William Howard" lastName:@"Taft"],
     66                        [YXPresident presidentWithFirstName:@"Woodrow" lastName:@"Wilson"],
     67                        [YXPresident presidentWithFirstName:@"Warren G" lastName:@"Harding"],
     68                        [YXPresident presidentWithFirstName:@"Calvin" lastName:@"Coolidge"],
     69                        [YXPresident presidentWithFirstName:@"Herbert" lastName:@"Hoover"],
     70                        [YXPresident presidentWithFirstName:@"Franklin D" lastName:@"Roosevelt"],
     71                        [YXPresident presidentWithFirstName:@"Harry S" lastName:@"Truman"],
     72                        [YXPresident presidentWithFirstName:@"Dwight D" lastName:@"Eisenhower"],
     73                        [YXPresident presidentWithFirstName:@"John F" lastName:@"Kennedy"],
     74                        [YXPresident presidentWithFirstName:@"Lyndon B" lastName:@"Johnson"],
     75                        [YXPresident presidentWithFirstName:@"Richard" lastName:@"Nixon"],
     76                        [YXPresident presidentWithFirstName:@"Gerald" lastName:@"Ford"],
     77                        [YXPresident presidentWithFirstName:@"Jimmy" lastName:@"Carter"],
     78                        [YXPresident presidentWithFirstName:@"Ronald" lastName:@"Reagan"],
     79                        [YXPresident presidentWithFirstName:@"George H W" lastName:@"Bush"],
     80                        [YXPresident presidentWithFirstName:@"Bill" lastName:@"Clinton"],
     81                        [YXPresident presidentWithFirstName:@"George W" lastName:@"Bush"],
     82                        [YXPresident presidentWithFirstName:@"Barack" lastName:@"Obama"],
     83                        nil];
     84 
     85 }
     86 
     87 #pragma mark - UITableViewDelegate - 
     88 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     89 {
     90     if (self.filteredPresident != nil) {
     91         return [self.filteredPresident count];
     92     }
     93     else{
     94         return [self.presidents count];
     95     }
     96 }
     97 
     98 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     99 {
    100     static NSString *Identify = @"cell";
    101     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identify];
    102     if (cell == nil) {
    103         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Identify];
    104     }
    105     YXPresident *president = [[YXPresident alloc] init];
    106     if (self.filteredPresident != nil) {
    107         president = [self.filteredPresident objectAtIndex:indexPath.row];
    108     }else{
    109         president = [self.presidents objectAtIndex:indexPath.row];
    110     }
    111     if (president) {
    112         cell.textLabel.text = [NSString stringWithFormat:@"%@ %@",president.firstName, president.lastName];
    113     }
    114     return cell;
    115 }
    116 
    117 #pragma mark - Content Filtering
    118 - (void)filterContentForSearchText:(NSString *)searchText
    119 {
    120     // 设置搜索条件
    121     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName CONTAINS[cd] %@ OR lastName CONTAINS[cd] %@",searchText,searchText];
    122     // 返回搜索结果
    123     self.filteredPresident = [self.presidents filteredArrayUsingPredicate:predicate];
    124 }
    125 #pragma mark - UISearchBarDelegate - 
    126 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    127 {
    128     [self filterContentForSearchText:searchText ];
    129     if (self.filteredPresident.count == 0 && [searchBar.text  isEqual: @""]) {
    130         self.filteredPresident = nil;
    131     }
    132     [self.mTableView reloadData];
    133 }
    134 
    135 @end
     1 #import <Foundation/Foundation.h>
     2 
     3 @interface YXPresident : NSObject
     4 
     5 @property (nonatomic, copy) NSString *firstName;
     6 @property (nonatomic, copy) NSString *lastName;
     7 
     8 + (YXPresident *)presidentWithFirstName:(NSString *)firstName lastName:(NSString *)lastName;
     9 
    10 @end
     1 #import "YXPresident.h"
     2 
     3 @implementation YXPresident
     4 @synthesize firstName, lastName;
     5 
     6 + (YXPresident *)presidentWithFirstName:(NSString *)firstName lastName:(NSString *)lastName
     7 {
     8     YXPresident *president = [[YXPresident alloc] init];
     9     president.firstName = firstName;
    10     president.lastName = lastName;
    11     return president;
    12 }
    13 
    14 @end
  • 相关阅读:
    日常点滴
    Django基础之forms组件中的ModelForm组件
    你想了解的轮询、长轮询和websocket都在这里了
    python并发编程之协程
    聊聊五大IO模型
    python并发编程之线程
    网络编程
    python并发编程之进程
    python中的异常处理
    flask实现文件的上传
  • 原文地址:https://www.cnblogs.com/lantu1989/p/4806994.html
Copyright © 2011-2022 走看看