在 UINavigationController 中的 TableViewController 中消失的 UISearc



我制作了一个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
    })()

相关内容

  • 没有找到相关文章

最新更新