私はこのコードを使用してUItableViewを検索しています:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if(searchText.length == 0)
{
isFiltered = FALSE;
}
else
{
isFiltered = TRUE;
if (filteredTableData == nil)
filteredTableData = [[NSMutableArray alloc] init];
else
[filteredTableData removeAllObjects];
for (NSString* string in self.itemArray)
{
NSRange nameRange = [string rangeOfString:searchBar.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if(nameRange.location != NSNotFound)
{
[filteredTableData addObject:string];
}
}
}
[tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}
すべて正常に動作しますが、編集を開始したときに表示されるキャンセルボタンを押すと、リストが返されませんが、検索結果は残ります。リストを表示するには、検索バーに1文字でも入力を開始してから削除するか、「x」を押してすべてのリストを表示する必要があります。キャンセルボタンをブロックする方法はありますか?または、押されたときにリストを表示するには?