如何使用按钮显示“搜索显示控制器”

Posted

技术标签:

【中文标题】如何使用按钮显示“搜索显示控制器”【英文标题】:How to show "Search Display Controller" using a button 【发布时间】:2014-03-20 15:10:03 【问题描述】:

我有一个奇怪的要求,或者至少是我以前从未做过的事情......我有一个UITableView,该表的标题是UISearchBar。如果您点击该搜索栏,则会出现“搜索显示控制器”并让您搜索......但现在我需要删除该搜索栏并从按钮中调用“搜索显示控制器”。

问题是,如果我在调用(从按钮)时删除 SearchBar:

   [self.searchDisplayController setActive:YES animated:YES]

我在视图顶部看不到 UISearchBar。

我不知道如何解决这个问题...我已经尝试过:

self.tableView.tableHeaderView = nil 在 vi​​ewDidLoad 中,当触摸按钮时,我再次将 UISearchBar 设置为表头......它看起来很丑,动画一点也不流畅。 隐藏搜索栏并在按下按钮时显示。 (我在表格视图的标题中有一个空白区域)并且动画非常糟糕,因为UISearchBar 首先显示在标题中,然后它被移到了视图的顶部......

我们非常欢迎任何帮助!! 谢谢!

【问题讨论】:

【参考方案1】:

我知道您已经尝试过,但我们就是这样做的,而且效果很好:

我们将 UISearchBar 添加到视图中(不是表格视图)。话虽这么说,如果您使用的是 UITableViewController,则不能这样做。您必须将 tableView 添加到 UIViewController。然后我们通过一个 Outlet 将它链接到 Controller,然后在 viewDidLoad 中将其设置为隐藏:

self.searchBar.hidden = YES;

然后创建一个选择器来再次显示 searchBar:

- (IBAction)search:(id)sender

  self.searchBar.hidden = NO;

  [self.searchBar becomeFirstResponder];

  [self.searchDisplayController setActive:YES animated:YES];

希望对您有所帮助。

【讨论】:

补充一点:导航栏下可以隐藏搜索栏,这样取消隐藏时搜索栏不会弹出。 这很有用!我做到了。非常感谢

以上是关于如何使用按钮显示“搜索显示控制器”的主要内容,如果未能解决你的问题,请参考以下文章

如何触发 UISearchBar 中的取消按钮?

iPhone 核心数据驱动搜索:如何,资源?

如何正确配置添加到现有表视图控制器的搜索栏?

我使用一个简单的搜索显示控制器

iOS 8 - 搜索显示控制器在右侧显示空白

iPad 搜索显示控制器从第二个单元格开始显示结果