如何使用Storyboard引用UISearchController

时间:2014-10-29 19:05:36

标签: ios objective-c uisearchbar uisearchcontroller

我添加了一个搜索栏&搜索显示控制器(假设这是我在故事板中添加的,因为他们没有'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;

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

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

2 个答案:

答案 0 :(得分:19)

  

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

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

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

  _searchController=[[UISearchController alloc] initWithSearchResultsController:self];

答案 1 :(得分:-5)

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