Swift2 tvOS:一种让UISearchController不显示为按钮的方法?

Swift2 tvOS:一种让UISearchController不显示为按钮的方法?,swift2,tvos,uisearchcontroller,apple-tv,Swift2,Tvos,Uisearchcontroller,Apple Tv,此代码 var searchController: UISearchController! @IBOutlet weak var collectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() searchController = UISearchController(searchResultsController: nil) searchController.se

此代码

var searchController: UISearchController!
@IBOutlet weak var collectionView: UICollectionView!

override func viewDidLoad() {
    super.viewDidLoad()

    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    view.addSubview(searchController.searchBar)
    getItems()
}
产生以下结果:

请注意,搜索栏显示为一个卡在左上角的按钮(因为这是一个选项卡式应用程序,它在第一次出现时显示在选项卡栏下。“按钮”按钮用于接收测试焦点)

按下按钮后的外观如下:

第二幅图显示了我希望搜索选项卡打开时的外观,以及我认为它在tvOS中的外观

如何使searchController显示在第二个屏幕截图中?很多tvOS应用程序都能做到这一点,所以我知道这一定是可能的。我已经仔细阅读了文件,但一定是遗漏了什么

一个相关的问题是下面的collectionView无法从searchController获得焦点。必须使用远程菜单按钮返回以使collectionView聚焦

当视图出现时,如何使searchController显示在第二个屏幕截图中


我怎样才能让collectionView从searchController获得焦点,而不必返回选项卡栏?

我终于在tvOS开发者库中看到了这篇文章

所有iOS第一响应机制都在tvOS上工作。这允许 开发人员提供一个UI,可见或隐藏,然后 文本字段通过调用 成为它的第一反应者。此操作将导致文本字段 在用户无需导航到 文本字段并单击它

所以,加上

searchController.searchBar.becomeFirstResponder()
显示我希望用户开始使用的内联键盘。但是,在调焦引擎再次启动之前,必须按下遥控器上的菜单按钮。菜单按钮也会关闭键盘,搜索栏会返回其按钮状态


这是对我第一个问题的回答。第二个仍然不清楚。

添加
self.searchController.searchBar.frame=CGRectMake(960-(self.searchController.searchBar.frame.size.width/2),200,self.searchController.searchBar.frame.size.width,44.0)
从选项卡栏下取出按钮,但生成的UI是一个破坏tvOS界面逻辑的乱码(在我看来)。