你如何使用 Storyboards 引用 UISearchController

Posted

技术标签:

【中文标题】你如何使用 Storyboards 引用 UISearchController【英文标题】:How do you reference to a UISearchController using Storyboards 【发布时间】:2014-10-29 19:05:36 【问题描述】:

我添加了一个搜索栏和搜索显示控制器(假设这是我在情节提要中添加的,因为他们没有“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,而是通过分配和初始化和设置框架来使用代码。

【问题讨论】:

谢谢老板,如果你想把这个作为答案,我很乐意接受。 【参考方案1】:

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

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

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

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

【讨论】:

@staxim 很抱歉听到这个消息。几个月没有接触 iOS 或 Xcode。这周晚些时候我会做一些调查。 9 个月后.. UISearchController 仍然不在情节提要视图中。 :( 11 个月后??还是什么都没有。 一年零两个月后??还是什么都没有。 一年半过去了,还是一无所获【参考方案2】:

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

【讨论】:

如下面的回答所述,UISearchDisplayController 已被弃用,取而代之的是 UISearchController,它在情节提要中不直接可用。

以上是关于你如何使用 Storyboards 引用 UISearchController的主要内容,如果未能解决你的问题,请参考以下文章

Xcode OS X Storyboards:如何获得对***“窗口内容”视图控制器的引用?

如何使用 Xcode Storyboards 创建 Popovers

如何在不使用 StoryBoards 的情况下使用 UITableViewController 在 Xamarin.iOs 中实现 UISearchController?

如何在没有 Storyboards/Unwindng Segues 的情况下在 Swift 中使用 UIViewControllerAnimatedTransitioning?

使用storyBoards时单元测试cellForRowAtIndexPath

如何根据目标C中StoryBoards中的特定条件转到新视图