Простое решение в Swift3 - нам нужно сделать CustomSearchBar без кнопки отмены и отменить соответствующее свойство в новом CustomSearchController:
class CustomSearchBar: UISearchBar {
override func setShowsCancelButton(_ showsCancelButton: Bool, animated: Bool) {
super.setShowsCancelButton(false, animated: false)
}}
class CustomSearchController: UISearchController {
lazy var _searchBar: CustomSearchBar = {
[unowned self] in
let customSearchBar = CustomSearchBar(frame: CGRect.zero)
return customSearchBar
}()
override var searchBar: UISearchBar {
get {
return _searchBar
}
}}
В MyViewController я инициализировать и настроить searchController с помощью этого нового подкатегорий под заказ:
var videoSearchController: UISearchController = ({
// Display search results in a separate view controller
// let storyBoard = UIStoryboard(name: "Main", bundle: Bundle.main)
// let alternateController = storyBoard.instantiateViewController(withIdentifier: "aTV") as! AlternateTableViewController
// let controller = UISearchController(searchResultsController: alternateController)
let controller = CustomSearchController(searchResultsController: nil)
controller.searchBar.placeholder = NSLocalizedString("Enter keyword (e.g. iceland)", comment: "")
controller.hidesNavigationBarDuringPresentation = false
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.searchBarStyle = .minimal
controller.searchBar.sizeToFit()
return controller
})()
И это работает должным образом y и гладкой! :-)
Возможно, вы смущены? showsCancelButton - это метод на UISearchBar, а не UISearchDisplayController (который устарел в iOS 8) или UISearchController (доступный начиная с iOS8). Возможно, вам нужно показать пример кода. – RobP
Убедитесь, что у вас есть набор делегатов, и просто поместите showCancelButton в viewDidLoad. – soulshined