UITextField 自定义搜索栏
1,创建UITextField,并且设置代理
searchField = [[UITextField alloc]initWithFrame:CGRectMake(0,5,320,36)] ; searchField.textColor= [UIColor colorWithRed:0.0/255.0 green:103.0/255.0 blue:155.0/255.0 alpha:1.0]; searchField.font= [UIFont systemFontOfSize:16] ; searchField.backgroundColor= [UIColor blueColor]; //搜索栏内容的位置 searchField.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom; [searchField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; // textField的文本发生变化时相应事件 // 设置ReturnKeyType为UIRetuirKeySearch; [searchField setReturnKeyType:UIReturnKeySearch]; // 设置UITextField的delegate为self searchField.delegate=self; mytableView.tableHeaderView = searchField;
2,搜索就是要做到实时监控输入内容的变化
- (void) textFieldDidChange:(UITextField*) TextField{ NSLog(@"textFieldDidChange textFieldDidChange %@", TextField.text); NSString *conditionStr = TextField.text; NSLog(@"+++++%@", conditionStr); // 2. 创建谓词,准备进行判断的工具 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.nameString CONTAINS [CD] %@ ", conditionStr]; seachArray = [NSMutableArray arrayWithArray:[allNameArray filteredArrayUsingPredicate:predicate]]; NSLog(@" searchMuArray = %@", seachArray); [mytableView reloadData]; if(![TextField.text isEqualToString:@""]) { // delButton.hidden=NO; // 仿制searchbar后面的小叉叉 } else{ // delButton.hidden=YES; } }
上面的代码只是一个参考 具体实现就是这么做的.
3,添加取消按钮
取消不仅仅只是删除UITextField的值,这样,我们还是起不到取消搜索的功能.那么我们应该怎么做呢
添加一个用于删除的button 具体创建就不写了
- (void)fieldCancleButton { searchField.text = @""; [self textFieldDidChange:searchField]; }
这是button的点击方法
同时,我们也要在viewWillAppear:里面调用button的点击方法,这样我们就能做到我们对搜索到的元素操作后,再次进入该页面的时候.保证显示的内容是全部的内容