2

검색 제어기의 제 발표 이후 범위 바 I 셋업 검색에 사용하고있는 코드는 숨겨 컨트롤러아이폰 OS (11)는 I 여기</p> <p>아이폰 OS (11)의 범위 막대와 함께 검색 창을 표시하는 <code>UISearchController</code>를 사용하는 것을 시도하고

let searchController = UISearchController(searchResultsController: nil) 
searchController.delegate = self 
navigationItem.searchController = searchController 
navigationItem.hidesSearchBarWhenScrolling = false 

searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.searchBar.showsScopeBar = true 
searchController.searchBar.scopeButtonTitles = ["1", "2", "3", "4"] 
searchController.searchBar.delegate = self 
definesPresentationContext = true 

언제나 볼 수있는 검색 표시 줄이 필요합니다. 위의 코드는보기 컨트롤러가로드 될 때 제대로 작동하며 범위 막대와 함께 검색 창을 표시합니다.

하지만 일단 검색 컨트롤러가 활성화되고 해체되면 iOS는 검색 컨트롤러를 닫을 때 스코프 바를 숨기고 검색 창만 표시합니다.

didDismissSearchController에 다음 코드를 추가하여이 문제를 해결하려고했지만 스코어 바와 검색 막대가 검색 막대 아래에있는 스코어 바 대신에 서로 위에 있습니다 (아래 그림 참조). searchBarTextDidBeginEditing(_ searchBar: UISearchBar) 또는 searchBarTextDidEndEditing(_ searchBar: UISearchBar)에이 코드를 추가해도 아무런 효과가 없습니다.

searchController.searchBar.showsScopeBar = true 
searchController.searchBar.sizeToFit() 

enter image description here

답변

1
  1. 를 추가해보십시오이이 검색 컨트롤러에 설치 :

    searchController.sizeToFit() 
    
  2. 그런 다음이 추가

    func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { 
        self.searchBar.sizeToFit() 
        return true 
    } 
    
    func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { 
        self.searchBar.sizeToFit() 
        return true 
    } 
    

searchController.searchBar.showsScopeBar = true을 검색 창 기능에 넣지 마십시오. 그것은 어떤 이유로 문제를 만듭니다.