UISearchController: 搜索结果控制器未显示

4

我对UISearchController比较陌生,如果这个问题有点傻,请谅解。

我尝试跟随这个问题,但无法得到我想要的结果。

在我的MapViewController's viewDidLoad中,我像这样初始化搜索控制器:

searchController = UISearchController(searchResultsController: customViewController)

其中customViewController是一个子类UIViewController,目前只有一些文本标签(通过界面生成器创建)。 (我像这样声明它:let customViewController = MyCustomeViewController()

我试图按照上述链接的方法,在委托方法中使用searchController.searchResultsController?.view.isHidden = false来隐藏和显示searchResultsController,但没有成功。

结果还是一样:只有视图变暗了。

理想情况下,我希望它类似于Facebook的应用程序,在您点击搜索栏时会显示不同的视图。

我在委托方法willPresentSearchController中打印了searchResultsController对象,并将其指示为MyCustomViewController

这里有什么我漏掉的东西吗,还是我的方法不正确?

enter image description here

2个回答

7
原来显示控制器需要是一个UITableViewController或其子类。我曾试过使用一个普通的UIViewController并嵌入一个UITableView,但没有成功。

0

我发现@Simon的答案是不正确的。我能够使用UIViewController作为searchResultsController

我的问题在于,搜索控制器本身被从内存中释放了,因为我没有将其保留为类范围实例。

换句话说,

不是

let searchController = UISearchController(searchResultsController: MySearchResultsController())
...
self.navigationItem.titleView = self.searchController.searchBar
// And add other delegates and stuff

我将一个类范围的全局变量定义并执行了。
private var searchController : UISearchController!

...

self.searchController = UISearchController(searchResultsController: MySearchResultsController())
...

self.navigationItem.titleView = self.searchController.searchBar
// And add other delegates and stuff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接