我试图使用UISearchController在地图视图上搜索目的地.我希望UISearchBar出现在导航栏中,但我似乎无法在没有显示右侧的取消按钮的情况下这样做:

这个取消按钮有时会消失,而我正在玩耍,但我现在无法让它显示我的搜索表显示我想要它:

我肯定必须有一些我做得有点小错误的东西,但我无法弄清楚它是什么......
self.resultsViewController = [UITableViewController new];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.resultsViewController];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = false;
self.searchController.delegate = self;
self.searchBar = self.searchController.searchBar;
self.searchBar.placeholder = self.stage.title;
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
self.definesPresentationContext = true;
self.navigationItem.titleView = self.searchBar;
self.resultsTableView = self.resultsViewController.tableView;
self.resultsTableView.dataSource = self;
self.resultsTableView.delegate = self;
Run Code Online (Sandbox Code Playgroud) 第一次应用程序的这部分加载搜索控制器的搜索栏的光标显示,根据需要.
(问题)当搜索被解除然后(稍后)重新编码时,没有光标:
这是可重复的,只是加载/解除,即没有任何显然可以/应该改变事物的色调,导致光标是背景的颜色(通常是缺少光标的答案,从我看到的SO Q&As)这个话题.)也就是说,没有别的东西不能工作,只是光标消失了.
一些(可能)复杂因素:
我已经做了各种尝试让孩子VC创建它自己的SearchController,和/或在根VC上使用它,依此类推.各种排列似乎都有效,但同样存在缺陷.(因此,我觉得我在寻找问题/解决方案来源的错误位置.)
我不能排除光标颜色已经改变,我不完全理解它是如何设置/继承的,特别是考虑到我拥有的VC堆栈,以及如何在调试器中测试它.我认为这就像我设置全局色调一样简单.
注意:这个程序是用故事板直接设置,并没有使用外观代理多.这说它有:
// Default tint for application...
UIApplication.sharedApplication().delegate?.window??.tintColor = mainBrandColor
UIToolbar.appearance().tintColor = mainBrandColor
Run Code Online (Sandbox Code Playgroud)
...我尝试过UISearchBar的各种排列,UINavigationBar色调通过外观代理w /相同的行为(首先工作,后来没那么多.)在不同时间,(即工作时和不工作时)看这个显示相同的颜色:
(lldb) po searchController.searchBar.tintColor
Run Code Online (Sandbox Code Playgroud)
注意:单独使用UISearchController(当调用VC不是容器的子代,而是推送VC时)并不能证明这个问题.光标保持正确的颜色.
环境:这是Swift on XCode 7.1上的iOS9.x应用程序.
这是一些代码,其中homeVC是父/容器VC:
if nil == homeVC.searchController {
homeVC.searchController = UISearchController(searchResultsController: nil)
homeVC.searchController!.searchResultsUpdater = self
homeVC.searchController!.delegate = self
homeVC.searchController!.searchBar.delegate = self
homeVC.searchController!.searchBar.showsCancelButton = false
homeVC.searchController!.searchBar.returnKeyType = .Done
homeVC.searchController!.searchBar.placeholder = "Add Item"
homeVC.searchController!.searchBar.searchBarStyle = UISearchBarStyle.Minimal
homeVC.searchController!.dimsBackgroundDuringPresentation = false
homeVC.searchController!.hidesNavigationBarDuringPresentation = …Run Code Online (Sandbox Code Playgroud)