UISearchController中的取消按钮导致SearchBar Glitch

时间:2017-01-06 10:49:45

标签: ios swift uitableview user-interface search

viewDidload中,我实例化UISearchController并将其搜索栏添加到表格视图的标题视图中,这是标准程序。

如果点击搜索栏并输入一些文字,会显示结果,我在这里取消搜索,没问题。

如果相反,我选择其中一个结果行,进入下一个屏幕,弹回并取消此处,搜索栏出现故障。

这是我的searchController:

// MARK : SearchController ! //

    var searchController : UISearchController!

    var resultsController = UITableViewController()

    ///////////
    override func viewDidLoad() {
        super.viewDidLoad()

        definesPresentationContext = true
        self.resultsController.tableView.dataSource = self
        self.resultsController.tableView.delegate = self
        self.searchController = UISearchController(searchResultsController: self.resultsController)
        self.tableView.tableHeaderView = self.searchController.searchBar
        self.searchController.searchResultsUpdater = self
        self.searchController.dimsBackgroundDuringPresentation = true
        self.searchController.searchBar.sizeToFit()
        self.searchController.searchBar.barTintColor = UIColor.blackColor()
        self.searchController.searchBar.endEditing(true)
        self.searchController.searchBar.placeholder = "חפש ברים"
        self.searchController.hidesNavigationBarDuringPresentation = false
        self.searchController.searchBar.delegate = self

}

整个搜索栏故障UI示例:

enter image description here

就像搜索栏不再是tableHeaderView而且它破坏了tableview将最后一个单元格和第一个单元格切成两半。

tableView的常规示例:

enter image description here

提前谢谢!

1 个答案:

答案 0 :(得分:0)

在玩了大量的设置后,我自己设法找到了解决方案,我不知道为什么这些特定的设置可以解决问题,但是这就解决了我的问题:

属性检查器中的设置:

enter image description here

viewDidLoad中的设置:

    override func viewDidLoad() {
                    super.viewDidLoad()

            //MARK : Fixes SearchBar Bugs

    self.resultsController.edgesForExtendedLayout = .All
    self.searchController.edgesForExtendedLayout = .All            

self.resultsController.extendedLayoutIncludesOpaqueBars = true

// End of Bug Fixes.