我尝试更改使用UISearchController(iOS 8及更高版本)实现的UISearchBar中的“取消”按钮颜色。这是我使用的代码:
if self.resultSearchController.active {
for subView in self.resultSearchController.searchBar.subviews {
for subsubView in subView.subviews {
if subsubView.isKindOfClass(UIButton) {
subsubView.tintColor = UIColor.whiteColor()
}
}
}
}
如果我将它粘贴到viewDidLoad中,它就不起作用,因为我认为只有当SearchController变为活动状态时,取消按钮才会初始化。
如果我在viewDidLayoutSubviews中粘贴代码,一切都很顺利,但我不确定它是否正确。
那么,我应该把这段代码放在TableViewController中?
另外,我不明白,我如何在TableViewController中接收SearchController变为非活动状态的通知。换句话说,我应该把代码放在这样的地方:
if self.resultSearchController.active == false {
//Do something
}
答案 0 :(得分:1)
首先,您应该插入委托方法: -
class HomeViewController: UIViewController,UISearchResultsUpdating, UISearchBarDelegate {
var searchController: UISearchController!
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search here..."
searchController.searchBar.delegate = self
searchController.searchBar.sizeToFit()
searchController.hidesNavigationBarDuringPresentation = true
tableView.tableHeaderView = searchController.searchBar
searchController.searchBar.tintColor = UIColor.whiteColor()
}
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
}
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
}
func updateSearchResultsForSearchController(searchController: UISearchController) {
}
}
然后使用委托方法并更改取消按钮颜色和你想要的东西
答案 1 :(得分:0)
您可以在AppDelegate
didFinishLaunchWithOptions:
中尝试此操作。
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).tintColor = UIColor.whiteColor()
PS:这是一种通用方法,会影响应用中UIBarButtonItem
的{{1}}。
答案 2 :(得分:-1)