UISearchController TableView 在使用搜索栏过滤数组时不更新
UISearchController TableView Not Updating when Using Search bar to filter array
我正在使用搜索栏来抓取用户输入的文本,然后使用它通过 NSArray 进行过滤,然后将新构造的数组分配给指定的 class' 数组 属性.代码如下:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchController.searchBar.text];
NSArray *temp = [_array filteredArrayUsingPredicate:predicate];
_resultViewController.dynamicArray = temp;
}
但是我的 resultViewController 的 tableView 没有显示任何数据。但是,如果我使用以下内容,它会起作用:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSArray *temp = [[NSArray alloc]initWithObjects:@"hello",@"bye",@"why",@"okay", nil];
_resultViewController.dynamicArray = temp;
}
我不太确定如何解决这个问题。似乎当我将 _resultViewController 的动态数组分配给 temp 时,在过滤数组时尚未设置 temp。但在第二种情况下它工作正常,所以我知道其余代码是正确的。
想法?
如果不进一步了解您的 _resultViewController.dynamicArray
,就无法提供帮助。需要考虑的事情:
_resultViewController
是您认为的视图控制器 - 正在显示其视图的实际视图控制器吗?
为什么仅设置 _resultViewController.dynamicArray
会导致该视图控制器中的任何事情 发生 ?例如,在我自己的代码中,有问题的视图控制器通常是 UITableViewController - 因此,在设置其模型数组后,我总是调用 table 视图的 reloadData
这样我们实际上 查看过滤后的数据。
我正在使用搜索栏来抓取用户输入的文本,然后使用它通过 NSArray 进行过滤,然后将新构造的数组分配给指定的 class' 数组 属性.代码如下:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchController.searchBar.text];
NSArray *temp = [_array filteredArrayUsingPredicate:predicate];
_resultViewController.dynamicArray = temp;
}
但是我的 resultViewController 的 tableView 没有显示任何数据。但是,如果我使用以下内容,它会起作用:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSArray *temp = [[NSArray alloc]initWithObjects:@"hello",@"bye",@"why",@"okay", nil];
_resultViewController.dynamicArray = temp;
}
我不太确定如何解决这个问题。似乎当我将 _resultViewController 的动态数组分配给 temp 时,在过滤数组时尚未设置 temp。但在第二种情况下它工作正常,所以我知道其余代码是正确的。
想法?
如果不进一步了解您的 _resultViewController.dynamicArray
,就无法提供帮助。需要考虑的事情:
_resultViewController
是您认为的视图控制器 - 正在显示其视图的实际视图控制器吗?为什么仅设置
_resultViewController.dynamicArray
会导致该视图控制器中的任何事情 发生 ?例如,在我自己的代码中,有问题的视图控制器通常是 UITableViewController - 因此,在设置其模型数组后,我总是调用 table 视图的reloadData
这样我们实际上 查看过滤后的数据。