Ich versuche, einen UISearchController in einem TableViewController zu implementieren. Nachdem ich den Text in der Suchleiste eingegeben habe, erhalte ich in der Konsole die Anzahl der anzuzeigenden Datensätze, aber die Tabellenansicht wird nicht neu geladen. Hier finden Sie den Code für den Update Search Results Controller. UISearchController Funktioniert nicht
- (void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.definesPresentationContext = YES;
_db=[[Database alloc]init];
if(_vehicles==nil){
_vehicles=[[NSMutableArray alloc]init];
}
_vehicles=[_db getTheData:nil];
NSLog(@"%lu",(unsigned long)_vehicles.count);
}
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
NSString *searchText = searchController.searchBar.text;
NSMutableArray<Vehicle*> *searchResults = [[NSMutableArray<Vehicle*> alloc]init];
for(Vehicle *v in self.vehicles){
if([v.make containsString:searchText]){
[searchResults addObject:v];
}
}
NSLog(@"%lu",searchResults.count);
VehicleTableViewController *tableController = (VehicleTableViewController *)self.searchController.searchResultsController;
tableController.vehicles = searchResults;
[tableController.tableView reloadData];
}
searchResultsController ist null hier. Ich bin sicher, dass Sie nicht die richtige Referenz bekommen können. –
Warum verwenden Sie [self.tableView reloadData] nicht, wenn es sich im selben View-Controller befindet? –