該程序實現了1到10000之間的數字搜索
1,聲明UISearchBar和UITableView的委託
@interface ViewController : UIViewController <UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource>
2,聲明全局變量
@interface ViewController () {
NSMutableArray *dataArr;
NSMutableArray *filterDataArr;
UITableView *numberTableView;
UISearchBar *numberSearchBar;
}
dataArr : 存儲所有要搜索的數據,1-10000
filterDataArr : 存儲搜索到的數據
3,初始化數據,將1-10000存儲到dataArr和filterDataArr中
filterDataArr = [[NSMutableArray alloc] init];
dataArr = [[NSMutableArray alloc] init];
for (int i = 0; i < 10000; i++) {
[dataArr addObject:[[NSString alloc] initWithFormat:@"%d", i]];
[filterDataArr addObject:dataArr[i]];
}
4,初始化UITableView
numberTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, numberSearchBar.frame.origin.y + numberSearchBar.frame.size.height, self.view.frame.size.width, self.view.frame.size.height - 80)];
numberTableView.delegate = self;
numberTableView.dataSource = self;
[self.view addSubview:numberTableView];
5,初始化UISearchBar
numberSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(40, 40, self.view.frame.size.width - 80, 40)];
numberSearchBar.delegate = self;
numberSearchBar.barStyle = UIBarStyleBlack; //黑色風格 默認是白色
numberSearchBar.barTintColor = [UIColor whiteColor]; //搜索框外背景變爲百色
[self.view addSubview:numberSearchBar];
6,實現UISearchBar委託
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[filterDataArr removeAllObjects]; 過去數據全部消除
for (int i = 0; i < dataArr.count; i++) {
if ([dataArr[i] containsString:numberSearchBar.text]) {
[filterDataArr addObject:dataArr[i]];
}
}
[numberTableView reloadData]; //重置TableView
}
7,實現UITableViewDelegate和UITableViewDataSource
//返回tableView的行數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return filterDataArr.count;
}
//搜索的數字顯示在tableView每一行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *identifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
else{
// 刪除cell中的子對象,解決覆蓋問題。
while ([cell.contentView.subviews lastObject] != nil) {
[(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
}
}
if (filterDataArr.count == 0) {
cell.textLabel.text = @"";
}
else {
cell.textLabel.text = filterDataArr[indexPath.row];
}
return cell;
}
//每行高度爲42
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 42;
}
//tableView的點擊效果
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
效果如圖