你如何使用 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?