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 )
我很难理解发生了什么事情。 所以任何帮助将非常感激。