UITableView で検索を実行できません。UITableViewController h ファイルでデリゲートなどを宣言しました。
@protocol searchTanksListDelegate
- (void) searchTanksList:(UISearchBar *) sender textDidChange:(NSString *) searchText;
@end
@property (weak, nonatomic) id <searchTanksListDelegate> searchDelegate;
@property (weak, nonatomic) IBOutlet UISearchBar *searchTanksList;
UITableViewController viewDidLoad 関数で searchTanksList.delegate を self に設定しました。
そして、私はこのようにメソッドを実装しました:
- (void)searchTanksList:(UISearchBar *)searchTanksList textDidChange:(NSString *)searchText
{
if (searchText.length == 0)
{
self.isFiltered = false;
}
else {
self.isFiltered = true;
self.searchResults = [[NSMutableArray alloc] init];
for (tank* thisTank in self.tanks)
{
NSRange nameRange = [thisTank.tankProduct rangeOfString:searchText options:NSCaseInsensitiveSearch];
NSRange numberRange = [thisTank.tankNumber rangeOfString:searchText options:NSCaseInsensitiveSearch];
NSRange productNumberRange = [thisTank.tankProductNumber rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound || numberRange.location != NSNotFound || productNumberRange.location != NSNotFound)
{
[self.searchResults addObject:thisTank];
}
}
}
}
プロパティが合成されているなど - そのため、コードはエラーや警告なしでコンパイルされます... 入力しても textDidChange メソッドは呼び出されません!