繁体   English   中英

按下“取消”按钮后,UISearchController取消VC

[英]UISearchController dismisses VC upon hitting cancel button

因此,我目前正在尝试用UISearchController替换我的一个项目中已描述的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?

这也在我身上发生。 我解决问题的方法是更换:

   resultSearchController.active = false

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

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

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

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

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

  2. 选项卡(或屏幕)变为黑色, 选项卡栏和UISearchController变为黑色屏幕

  3. 在iOS 10、11和12中,都可以在UINavigationController导航栏的标题视图内使用UISearchController ,就像这样的问题。 UISearchBar在iOS 11中增加导航栏的高度

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

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

self.definesPresentationContext = true

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

请记住,该解决方案解决了我遇到的#1和#2问题。 仅此而已。

在哪里添加? viewDidAppear内部。 而已!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM