首页 > 代码库 > iOS之UISearchBar实时显示结果
iOS之UISearchBar实时显示结果
iOS之UISearchBar实时显示结果
UISearchBar 经常是配合UITableView 一起使用的,一般都将UITableView的tableHeaderView属性设置为UISearchBar.使用UISearchBar需要实现UISearchBarDelegate 中的三个方法。
//取消按钮被点击的时候
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar;
//搜索按钮被点击的时候
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;
//搜索内容改变的时候,在这个方法里面实现实时显示结果
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
主要代码:
.h文件
?
1 2 3 4 5 | #import <UIKit/UIKit.h> @interface SearchViewController : UITableViewController @end |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | // // SearchViewController.m // UIViewDemo // // Created by Carl on 13-6-1. // Copyright (c) 2013年 Carl. All rights reserved. // #import "SearchViewController.h" @interface SearchViewController ()<UISearchBarDelegate,UISearchDisplayDelegate> @property (nonatomic,strong) NSMutableArray * dataSource; @property (nonatomic,strong) NSMutableArray * dataBase; @property (nonatomic,strong) UISearchDisplayController * mySearchDisplayController; @end @implementation SearchViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - ( void )viewDidLoad { [super viewDidLoad]; _dataSource = [[NSMutableArray alloc] init]; _dataBase = [[NSMutableArray alloc] init]; for ( int i = 0; i < 50; i++) { [_dataSource addObject:[NSString stringWithFormat:@ "%d" ,i]]; [_dataBase addObject:[NSString stringWithFormat:@ "%d" ,i]]; } // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; UISearchBar * searchBar = [[UISearchBar alloc] init]; searchBar.frame = CGRectMake(0, 0, self.tableView.bounds.size.width, 0); searchBar.delegate = self; searchBar.keyboardType = UIKeyboardTypeNumberPad; searchBar.showsCancelButton = YES; searchBar.showsBookmarkButton = YES; searchBar.placeholder = @ "请输入" ; // searchBar.barStyle = UIBarStyleBlack; searchBar.translucent = YES; searchBar.barStyle = UIBarStyleBlackTranslucent; // searchBar.tintColor = [UIColor redColor]; searchBar.prompt = @ "搜索" ; [searchBar sizeToFit]; self.tableView.tableHeaderView = searchBar; } - ( void )didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [_dataSource count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @ "Cell" ; // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // Configure the cell... UITableViewCell *cell ; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [_dataSource objectAtIndex:indexPath.row]; return cell; } /* // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } */ /* // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } */ /* // Override to support rearranging the table view. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } */ /* // Override to support conditional rearranging of the table view. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } */ #pragma mark - Table view delegate - ( void )tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; */ } -( void )searchBarSearchButtonClicked:(UISearchBar *)searchBar { [_dataSource removeAllObjects]; for (NSString * data in _dataBase) { if ([data hasPrefix:searchBar.text]) { [_dataSource addObject: data]; } } [self.tableView reloadData]; [searchBar resignFirstResponder]; } -( void )searchBarCancelButtonClicked:(UISearchBar *)searchBar { searchBar.text = @ "" ; [searchBar resignFirstResponder]; } -( void )searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { if (0 == searchText.length) { return ; } [_dataSource removeAllObjects]; for (NSString * str in _dataBase) { if ([str hasPrefix:searchText]) { [_dataSource addObject:str]; } } [self.tableView reloadData]; } @end |
iOS之UISearchBar实时显示结果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。