ma1*_*w28 5 uikit uisearchbar ios uisearchcontroller
在viewDidLoad我的自定义子类的UITableViewController,我已经设置navigationItem.titleView到searchBar的UISearchController,我与初始化nil了searchResultsController。
当我点击搜索栏时,输入文本,然后点击暗淡的基础内容,然后UISearchController将停用(按预期方式),并且清除输入的搜索文字(出乎意料)。
当我明确地(以编程方式)将搜索控制器设置为非活动状态时,搜索文本也被清除(也意外地)。为了解决这个问题,我先存储了搜索文本,然后在关闭搜索控制器后将其重新设置。尽管很hack,但它可以工作。
let searchText = searchBar.text // #hack
searchController.isActive = false
searchBar.text = searchText // #hack
Run Code Online (Sandbox Code Playgroud)
对于自动关闭搜索控制器的情况,我尝试使用UISearchControllerDelegate方法进行类似的操作,即将搜索文本存储在中willDismissSearchController(_:)并将其重新设置为didDismissSearchController(_:)。但是,此解决方案仍显示已清除搜索文本,然后将其设置回之前的状态。
自动关闭搜索控制器后,如何无缝保留搜索栏文本?
为了显式(以编程方式)关闭搜索控制器,UISearchController它是一个视图控制器,因此您可以只调用dismiss(animated:completion:)它而不是设置isActive = false和重置搜索文本:
searchController.dismiss(animated: true)
Run Code Online (Sandbox Code Playgroud)
关闭后,搜索栏文本仍将保留在搜索栏中。