在TableVIew中搜尋篩選:謂詞,tableview謂詞
在TableView中搜尋,篩選出自己需要的內容,需要用到iOS中的謂詞:NSPredicate.謂詞的功能很想資料庫中的查詢語句,就是從資料集合中篩選出合格對象,這讓我想起了在qt時遇到的Regex,不過當時沒有好好學.
方法步驟:
首先在表中加入搜尋輸入框
UITextField *_textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 250, 30)]; _textField.borderStyle = UITextBorderStyleRoundedRect;//設定代理 _textField.delegate = self;//再次輸入時清空 _textField.clearsOnBeginEditing = YES;//設定return功能 _textField.returnKeyType = UIReturnKeyDone;//添加點擊事件 [_textField addTarget:self action:@selector(filter:) forControlEvents:UIControlEventEditingChanged]; self.navigationItem.titleView = _textField;
設定textfield的點擊事件
#pragma mark - UITextField Delegate- (BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES;}
重點:textfield點擊事件
- (void)filter:(UITextField *)textField{ //當輸入框中沒有輸入內容時,搜尋結果與原資料不變 if ([textField.text length] == 0) { self.fontsArray = _data; [self.tableView reloadData]; return; } //設定謂詞內容 NSString *regex = [NSString stringWithFormat:@"SELF LIKE[c]'%@*'", textField.text]; NSPredicate *predicate = [NSPredicate predicateWithFormat:regex]; //將篩選後的結果傳遞到中繼資料數組中 self.fontsArray = [_data filteredArrayUsingPredicate:predicate]; [self.tableView reloadData];}