如何使用Storyboard引用UISearchController

Jam*_*mes 5 objective-c uisearchbar ios uisearchcontroller

我添加了一个搜索栏和搜索显示控制器(假设这是我在storyboard中添加的,因为他们没有'SearchController'对象被拖出来).

我的问题是如何在SearchController上设置属性呢?self.searchController不起作用,Xcode表示当我将UISearchBar添加到视图时会自动添加它.我究竟做错了什么?我需要访问它的原因是我可以设置结果搜索表,如下所示:

UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
 searchResultsController.tableView.dataSource = self;
 searchResultsController.tableView.delegate = self;

 self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];

self.searchController.searchResultsUpdater = self;
Run Code Online (Sandbox Code Playgroud)

我注意到这里的例子:https://github.com/dempseyatgithub/Sample-UISearchController

其中说它使用故事板,实际上并没有使用故事板来添加UISearchController,而是通过分配和初始化以及设置框架来使用代码.

小智 19

重要提示:UISearchDisplayController在iOS 8中已弃用.(请注意,UISearchDisplayDelegate也已弃用.)要管理搜索栏的显示并在iOS 8及更高版本中显示搜索结果,请改用UISearchController.

正如官方文档中所提到的,最好停止将旧样式UISearchDisplayController添加到面向iOS 8.0+的应用程序中.但似乎他们没有从Xcode6.1中的UI控制器库中删除旧的.他们还没有添加新的UISearchController.我们等待下一个补丁.

但您仍然可以通过代码添加新的:

  _searchController=[[UISearchController alloc] initWithSearchResultsController:self];
Run Code Online (Sandbox Code Playgroud)

  • 和9个月后.. UISearchController仍然没有在故事板视图中.:( (4认同)
  • 而11个月后?依然没有. (3认同)
  • 一年半之后,仍然一无所获 (3认同)

rde*_*mar -5

当您将搜索栏和搜索显示控制器对象拖到表格视图上时,名为 searchDisplayController 的 IBOutlet 会自动添加到您的控制器,而不是名为 searchController 的 IBOutlet。它还为您设置数据源和委托。

  • 正如下面的答案所述,UISearchDisplayController 已被弃用,取而代之的是 UISearchController,它在故事板中不能直接使用。 (4认同)