你如何引用一个使用故事板的UISearchController

我已经添加了一个search栏和search显示控制器(假设这是我添加的故事板,因为他们没有'SearchController'对象拖出)。

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

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,但通过分配和初始化和设置框架使用代码。

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

重要提示:UISearchDisplayController在iOS 8中已弃用。(请注意,UISearchDisplayDelegate也被弃用。)要pipe理search栏的显示并在iOS 8和更高版本中显示search结果,请改为使用UISearchController。

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

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

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