2014-12-16 4 views
1

제거하고, 어떤 경우에는 내가이수 없습니다 내가 검색 디스플레이 컨트롤러를 사용하고 취소 버튼

더를 수행하는 searchBarShouldBeginEditingNO-showsCancelButton, 또는 setShowsCancelButton:animated:을 설정하지 아직 버튼을

을 취소 할 필요가 없습니다 작동

버튼을 제거하려면 어떻게해야합니까? 이 새로운를 사용하여 searchController을 MyViewController에서

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 
    } 
}} 

내가 초기화 및 구성 : - Swift3에서

+0

아마도 혼란 스럽습니까? showsCancelButton은 UISearchDisplayController (iOS 8에서는 사용되지 않음) 또는 UISearchController (iOS8에서 사용 가능)가 아닌 UISearchBar의 메소드입니다. 어쩌면 몇 가지 샘플 코드를 보여줄 필요가있을 것입니다. – RobP

+0

위임자 세트가 설정되어 있고 showsCancelButton을 viewDidLoad에 배치했는지 확인하십시오. – soulshined

답변

0

쉬운 솔루션 우리는 버튼을 취소하지 않고 CustomSearchBar을하고 새로운 CustomSearchController에서 해당 속성을 재정의 할 필요가 맞춤 하위 클래스 :

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 부드럽게! :-)