2012-08-03 51 views
5

这非常令人沮丧:即使搜索字符串为空,我仍试图在UISearchDisplayController中显示未过滤的结果。当搜索字符串为空时显示UISearchDisplayTableView

将调试代码添加到numberOfSectionsInTableView:numberOfRowsInSection:表明,当我的搜索字符串为空时,返回非零整数,但永远不会调用cellForRowAtIndexPath:! tableview似乎隐藏起来。

我试着设置tableview.hidden=NO;searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView无济于事。

这不可能很难拉扯,我想这是一个很常见的事情!

回答

2

那么对此的解决方案是不使用UISearchDisplayController。它根本不提供您需要做这样的事情的灵活性。使用UISegmentedControl,UISearchBar和UITableView构建您自己的自定义搜索界面,实现最大的灵活性。

2

你可以做的是当用户点击搜索和字符串为空改变searchBartext成“\ n”回车

self.searchDisplayController.searchBar.text = @"\n"; 

回车不是在搜索栏显示也将不是相同的字符串,就好像用户键入“\ n”。所以它工作正常。 在

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 

方法,你可以设置搜索栏的文本回@“”。如果搜索字符串是@“\ n”

self.searchDisplayController.searchBar.text = @""; 

这就是为我工作的!

+0

无论何时设置self.searchDisplayController.searchBar.text = @“”;在shouldReloadTableForSearchString中它不起作用。我想这样做是为了能够看到我的占位符文本。有什么想法吗? – DonnaLea 2014-03-26 05:03:40

+0

我一定是睡着了,因为它现在可以工作。 Yay – DonnaLea 2014-03-26 15:11:44

+0

如果你有''“'空文本,占位符文本将被删除。 @DonnaLea,能否请你解释它是如何为你工作的 – Sategroup 2015-09-13 07:16:00

4

我知道这是一个旧帖子,但我有与新的iOS8 UISearchController相同的问题。解决方法是检查字符串是否为空并设置结果tableview的属性HIDDEN = NO

+0

我有同样的问题,但我的结果tableview的属性隐藏总是等于NO。 – Allen 2015-11-04 07:24:18