我制作了一个UITableView控制器,其中UISearchBar作为表的标题。
然后,我将这个视图控制器嵌入到UINavigationController中,作为根视图控制器。
现在,当我点击搜索栏时,搜索栏似乎消失并显示白屏。出现键盘,但没有搜索栏。表视图可以滚动,但搜索栏只是消失了。
当我在没有导航控制器的情况下实现这个 UITableViewController 时,它可以完美地工作。但是关于导航控制器的某些东西正在使一切变得无聊。
我有时会遇到同样的问题,尤其是对于少量行(少于 50 行)的表视图。搜索栏似乎已从视图层次结构中删除,正好是从作为UISearchControllerView的子级的容器视图中删除的。
我找到了一种解决方法,可以手动添加回搜索栏作为 UISearchControllerView 容器子项的子视图。这是在委托函数(来自UISearchControllerDelegate)didPresentSearchController中实现的:
func didPresentSearchController(searchController: UISearchController) {
if searchController.searchBar.superview == nil {
for searchCtrlChildView in searchController.view.subviews {
if searchCtrlChildView.frame.origin == CGPoint(x: 0, y: 0) { //Discriminate if by chance there was more than one subview
searchCtrlChildView.addSubview(searchController.searchBar)
break
}
}
}
}
我也已经向苹果提交了雷达,因为它在iOS 8.4中没有修复
检查我的搜索方式在视图中栏它DidLoad
我也在导航控制器中嵌入了我的视图控制器
我的代码(希望有帮助):
class myTableViewController: UITableViewController,UISearchResultsUpdating,UISearchControllerDelegate,UISearchBarDelegate
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.tableView.tableHeaderView = controller.searchBar
return controller
})()