【发布时间】:2015-11-18 19:47:17
【问题描述】:
我有 UISearchController 和 UITableView。 viewDidLoad 中的代码是:
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = YES;
[self.searchController.searchBar sizeToFit];
self.searchController.searchBar.delegate = self;
self.searchController.delegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.tableView.userInteractionEnabled = YES;
我希望每当我点击搜索栏时都会出现灰色视图,当我开始输入时,灰色视图会消失并显示 tableView,以便我可以点击单元格。这意味着只有在搜索栏为空时才会出现灰色视图(就像邮件和联系人应用程序中的默认搜索行为一样)。我试图设置
self.searchController.dimsBackgroundDuringPresentation
在基于searchBar.text的委托方法中
-(void )searchBarTextDidBeginEditing:(UISearchBar *)searchBar
但它不起作用。 有什么想法吗?
谢谢,
【问题讨论】:
-
这就是 dimsBackgroundDuringPresentation 的工作原理。你是如何实现 uisearchcontroller 的?它只会使搜索结果变暗。看起来你可能不会展示任何东西。
-
这就是我为 UISearchController 所做的一切。其他一切都由表视图实现,并且 (void)updateSearchResultsForSearchController:(UISearchController *)searchController 根据搜索文本重新加载 tabla 视图。我还有什么需要做的吗?
-
不幸的是,它比这更复杂。您需要搜索 tableview 的数据源并找到搜索结果,然后将它们呈现给用户。您可以在此处找到有关如何执行此操作的教程:jhof.me/simple-uisearchcontroller-implementation
-
@beyowulf 是的,我按照教程进行了操作,并且成功了。谢谢。
-
但是应该有办法动态设置 dimsBackgroundDuringPresentation 属性,对你来说写新表很容易,但是如果表很复杂,许多开发人员更喜欢使用同一个控制器来显示结果,怎么办这种情况?问题依然存在。
标签: ios objective-c uisearchbar uisearchcontroller