UISearchController 不工作

UISearchController Not working

我正在尝试在 TableViewController 中实现 UISearchController。在搜索栏中输入文本后,我在控制台中计算要显示的记录数,但 tableview 没有重新加载。请查找更新搜索结果控制器的代码。

- (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];

}
VehicleTableViewController *tableController = (VehicleTableViewController *)self.searchController.searchResultsController;

我认为这行是错误的。 searchResultsController 不是 tableviewctrler。你不能强迫它成为一个。您已经有 table查看参考,因此请使用它。

[self.tableView reloadData];

确保在重新加载 table 之前用搜索结果替换 Table 数据源。

[dataSourceArr removeAllObjects];
[dataSourceArr = [NSMutableArray arrayWithArray: searchResults];