2014-12-16 1 views
1

я использую поиск контроллер дисплея, а в некоторых случаях я не нужен кнопка отменыНевозможно избавиться от кнопки отмены

еще в searchBarShouldBeginEditing не устанавливая showsCancelButton к NO или setShowsCancelButton:animated:

делает нет работа

что я могу сделать, чтобы избавиться от кнопки?

+0

Возможно, вы смущены? showsCancelButton - это метод на UISearchBar, а не UISearchDisplayController (который устарел в iOS 8) или UISearchController (доступный начиная с iOS8). Возможно, вам нужно показать пример кода. – RobP

+0

Убедитесь, что у вас есть набор делегатов, и просто поместите showCancelButton в viewDidLoad. – soulshined

ответ

0

Простое решение в 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 и гладкой! :-)