問題は部分的に解決されました。投稿の最後を参照してください:
動作していない の検索結果を表示してUITableView
います。table
は空白のままで、何も表示さresults
れませsearching
ん。search
table
"No Results"
table
注: では、でを実行しIB
ました。connect
delegate
UISearchBar
Connection Inspector
Controller
お役に立てれば幸いです。
母:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return (tableView == self.searchDisplayController.searchResultsTableView) ? [self.seriesArrayFiltered count] : [self.seriesArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SeriesCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Serie *aSerie = nil;
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSLog(@"search is displaying");
aSerie = self.seriesArrayFiltered[[indexPath row]];
} else {
NSLog(@"search is NOT displaying");
aSerie = self.seriesArray[[indexPath row]];
}
UILabel *valueLbl = (UILabel *)[cell viewWithTag:101];
valueLbl.text = aSerie.name;
return cell;
}
-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {
[self.seriesArrayFiltered removeAllObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",searchText];
self.seriesArrayFiltered = [NSMutableArray arrayWithArray:[self.seriesArray filteredArrayUsingPredicate:predicate]];
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:self.searchDisplayController.searchBar.text scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]];
return YES;
}
時間:
#import <UIKit/UIKit.h>
@interface SeriesTableVC : UITableViewController <UISearchDisplayDelegate, UISearchBarDelegate>
@property (nonatomic, strong) NSArray *seriesArray;
@property (nonatomic, strong) NSMutableArray *seriesArrayFiltered;
@property (weak, nonatomic) IBOutlet UISearchBar *seriesSearchBar;
@end
次のコードを変更すると、検索結果が表示されるようになりましたが、ラベルが認識されない理由を知りたいです。
の:cellForRowAtIndexPath
//UILabel *valueLbl = (UILabel *)[cell viewWithTag:101];
//valueLbl.text = aSerie.name;
cell.textLabel.text = aSerie.name;