带有nil searchResultsController的UISearchController

时间:2016-06-18 13:51:13

标签: swift ios9 uisearchcontroller

我正在使用带有UITableView的UISearchController,并在我的基本视图控制器上使用相同的表视图来显示搜索结果(没有将单独的搜索结果控制器指定为searchController = UISearchController(searchResultsController: nil))。

然而,尽管将searchResultsController设置为nil,但当搜索处于活动状态时,我的视图控制器上仍会显示空的透明_UISearchControllerView

有没有办法防止这种情况,并将我的视图控制器保留在搜索控件层次结构的顶部?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以通过将搜索控制器的dimsBackgroundDuringPresentation属性设置为false来删除它

searchController.dimsBackgroundDuringPresentation = false

答案 1 :(得分:0)

默认情况下,UISearchController会使显示的视图变暗。如果您使用searchResultsController的其他视图控制器,这将非常有用。在您的代码中,您已设置当前视图以显示结果,因此您不希望将视图调暗。

searchController.dimsBackgroundDuringPresentation = false

答案 2 :(得分:0)

从iOS 13开始,UISearchController#dimsBackgroundDuringPresentation已过时。

防止模糊包含的视图控制器的正确方法是改用obscuresBackgroundDuringPresentation

searchController.dimsBackgroundDuringPresentation = false

请参见the documentation

当此属性的值为true时,一旦用户与搜索栏进行交互,搜索控制器就会模糊包含您可搜索内容的视图控制器。当此属性为false时,搜索控制器不会模糊原始视图控制器。此属性仅控制原始视图控制器是否最初被遮盖。当用户在搜索栏中输入文本时,搜索控制器会立即显示带有结果的搜索结果控制器。

如果使用相同的视图控制器来显示可搜索的内容和搜索结果,建议将此属性设置为false 。此属性的默认值为true

答案 3 :(得分:-1)

大家好,请试试这个。

-(void) searchBar: (UISearchBar *) searchBar textDidChange:(NSString *)     searchText{
NSMutableArray *sortedData = [[NSMutableArray alloc] init];

    if ([searchText isEqualToString:@""]) {
        _localArray = _mainArray; // you must take a local array
    }
    else{
       //show your sorted data
    }

}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
searchBar.text = nil;
[searchBar resignFirstResponder];
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[searchBar resignFirstResponder];
[self.view endEditing:YES];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
[searchBar resignFirstResponder];
[self.view endEditing:YES];
}