Swift - 修改UISearchControlle取消按钮的文字(默认为Cancel)
搜索控制器(UISearchController)在开发中常常会用到,通常我们会将其自带的搜索栏放在页面上方或者表头位置。




点击进入搜索状态时,会发现右侧的取消按钮文字是英文的 Cancel,而且不会根据当前系统的语言环境切换。

有时我们想要将这个按钮修改成其他文字,比如“搜索”。但 UISearchController 不提供直接修改这个按钮文字的方法或属性。我原来也写过一篇关于修改 UISearchBar 上 Cancel 文字的文章:Swift - 修改搜索条(UISearchBar)中取消按钮的文字、颜色。但原来那个方法不适用于 UISearchController。
1,修改Cancel按钮文字标题
我们可以通过 searchBar 的 setValue 方法来设置默认文字。
import UIKit class ViewController: UIViewController { var searchController:UISearchController! override func viewDidLoad() { super.viewDidLoad() //配置搜索控制器 self.searchController = ({ let controller = UISearchController(searchResultsController: nil) //controller.searchResultsUpdater = self controller.hidesNavigationBarDuringPresentation = true controller.dimsBackgroundDuringPresentation = false controller.searchBar.searchBarStyle = .minimal controller.searchBar.sizeToFit() return controller })() //将搜索栏添加到页面上 let searchBarFrame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: 44) let searchBarContainer = UIView(frame: searchBarFrame) searchBarContainer.addSubview(searchController.searchBar) self.view.addSubview(searchBarContainer) //搜索栏取消按钮文字 searchController.searchBar.setValue("搜索", forKey:"_cancelButtonText") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
2,运行效果
