@interface HomeTableViewController : UITableViewController<UITextFieldDelegate>
{
@private
NSArray *_fontsArray;
NSArray *_data;
UITextField *_textField;
}
@property (nonatomic,retain) NSArray *fontsArray;
@end
@implementation HomeTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
_fontsArray = [NSMutableArray arrayWithArray:[UIFont familyNames]];
_data = [UIFont familyNames];
_textField = [[UITextField alloc]initWithFrame:CGRectMake(20, 2, self.view.bounds.size.width-40, 40)];
_textField.borderStyle = UITextBorderStyleRoundedRect;
_textField.delegate = self;
_textField.returnKeyType = UIReturnKeyDone;
_textField.clearsOnBeginEditing = YES;// 清除上一次编辑内容
[_textField addTarget:self action:@selector(filter:) forControlEvents:UIControlEventEditingChanged]; //值编辑时调用
self.navigationItem.titleView = _textField;
}
- (void)filter:(UITextField *)sender{
NSLog(@"---------");
if (_textField.text == nil) {
self.fontsArray = _data;
[self.tableView reloadData];
return;
}else{
NSString *str = [NSString stringWithFormat:@"SELF LIKE [c]'%@*'",_textField.text];
NSPredicate *predicate = [NSPredicate predicateWithFormat:str]; //模糊查询
self.fontsArray = [_data filteredArrayUsingPredicate:predicate];
[self.tableView reloadData]; //整个表格重绘
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _fontsArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, self.view.bounds.size.width-20, 44)];
label.tag = 101;
label.backgroundColor = [UIColor yellowColor];
[cell.contentView addSubview:label];
}
UILabel *label = (UILabel *)[cell.contentView viewWithTag:101];
label.text = _fontsArray[indexPath.row];
return cell;
}
#pragma mark - UITextField Delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder]; //点击返回按钮时,失去第一响应
return YES;
}