embedded到UISplitViewController中时,iOS11 UISearchBar在UINavigationBar中丢失

奇怪的事情似乎发生在UISplitViewController的详细视图上使用新的iOS 11的navigationItem.searchController方法。

searchBar在第一个演示文稿中部分显示为空白,然后出现在错误的UITableViewController ,但在UITableViewController的一些推送和popup之后自行更正。

我曾经把searchBar放在tableHeaderView ,但是我根据WWDC的build议更改了代码:

 if (@available(iOS 11.0, *)) { self.navigationItem.searchController = self.searchController; self.navigationItem.hidesSearchBarWhenScrolling = NO; } else { self.tableView.tableHeaderView = self.searchController.searchBar; } 

这个例子是使用标准的示例代码( UISplitViewController默认项目和UISearchController的苹果演示为iOS 11更新(使用单个UITableViewController ))。

包含searchController的初始视图如下所示:

在这里输入图像说明

然后单击一个UITableView项目产生这样的:

在这里输入图像说明

然而,点击一个UITableView项目并返回两次 – 它看起来应该是:

在这里输入图像说明

和:

在这里输入图像说明

我试图确定为什么UISearchController的苹果示例工作,我的代码没有。 主要区别在于embedded在详细视图中的UISplitViewController中。 这意味着如果在紧凑模式下显示堆栈中有一个额外的UINavigationController 。 我发现如果我的seque避免了多余的UINavigationController – 它工作正常(但打破设备旋转)。 同样改变赛格模式允许它工作。

在这里输入图像说明

我注意到这是类似于这个旧的问题: UISplitViewController新的UISearchController问题与UISearchBar

我已经创build了一个演示问题的示例项目( 示例代码:searchControllerDemo )

我很难理解发生了什么事情。 所以任何帮助将非常感激。