UISearchController在点击取消按钮时解除VC

时间:2015-05-05 18:07:18

标签: ios uitableview swift uisearchbar uisearchcontroller

所以,我正在尝试用UISearchController替换我的一个项目中的depricated searchDisplayController,我遇到了这个问题。

如果搜索中没有结果(UITableView为空),整个ViewController将被解除。当搜索结果不为空时,不会发生这种情况。我不想说清楚我没有使用UITableViewController。相反,我有一个带有UITableView的常规VC。

以下是我的一些代码:

var resultSearchController = UISearchController()
override func viewDidLoad() {
    super.viewDidLoad()
    self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.delegate = self
        controller.searchBar.delegate = self
        self.studentTable.tableHeaderView = controller.searchBar
        return controller
    })()
    ....
}

现在,如果我将此函数添加到等式中,则取消按钮始终会取消VC。

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
    resultSearchController.active = false
}

那么为什么设置searchController.active = false会解雇VC呢?是因为它使用与VC相同的UITableView吗?我相信旧的searchDisplayController只会显示一个正在使用的UITableView。如果是这种情况,是否有办法覆盖dismissVC?

2 个答案:

答案 0 :(得分:3)

这也发生在我身上。我解决它的方法是取代:

   resultSearchController.active = false

    resultSearchController.searchBar.text = ""
    resultSearchController.searchBar.resignFirstResponder()

我希望这可以帮助你: - )

答案 1 :(得分:1)

2018 想分享我1-2小时调试的成果。

在将UISearchControllerUITabBarController一起使用时,我遇到多个问题,即:

  1. 这是OP的问题。点击取消按钮可关闭显示searchController的屏幕。

  2. 选项卡(或屏幕)变为黑色,Tab Bar and UISearchController giving black screen

  3. 在iOS 10、11和12中,在UISearchController导航栏的标题视图内使用UINavigationController就像这样的问题。 UISearchBar increases navigation bar height in iOS 11

对于#3的解决方案,因为我们已经在这里:https://stackoverflow.com/a/53264329/3231194

最后,我一直看到的唯一解决方案是添加以下代码:

self.definesPresentationContext = true

问题是我将其置于错误的函数中。

请记住,该解决方案解决了我遇到的#1和#2问题。没什么,没什么。

在何处添加?在viewDidAppear内。就是这样!