2017-10-13 9 views
0

UISearchBar와 함께 UITableViewController를 사용하고 있습니다. UITableViewController는 UINavigationController에 내장되어 있습니다. 테이블보기가 표시되면 검색 막대가 예상대로 맨 위에 표시됩니다 (탐색 막대 아래에 있음). 탐색 바에 제목과 프롬프트가 표시됩니다.IOS : 프롬프트로 UINavigationBar를 부분적으로 덮는 IOS : UISearchBar

검색 창을 클릭하면 위로 이동하고 내비게이션 막대에서 제목을 숨 깁니다. 프롬프트가 계속 표시됩니다. 프롬프트를 사용하지 않을 때 검색 막대는 클릭 한 다음 예상대로 탐색 막대 아래에 있습니다.

나는 내 문제를 설명하는 매우 간단한 프로젝트를 만들었습니다. 은 UINavigationController에 포함 된 경우에만 비어있는 UITableViewController이

import UIKit 

class searchTVC: UITableViewController, UISearchControllerDelegate, UISearchResultsUpdating { 
    fileprivate let searchController = UISearchController(searchResultsController: nil) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     title = "Title" 
     navigationItem.prompt = "prompt" 

     tableView.backgroundColor = UIColor.gray 

     // Add search bar 
     searchController.delegate = self 
     searchController.searchResultsUpdater = self 
     searchController.hidesNavigationBarDuringPresentation = false 
     searchController.dimsBackgroundDuringPresentation = false 
     searchController.searchBar.sizeToFit() 

     tableView.tableHeaderView = searchController.searchBar 

     // remove separators for empty table 
     tableView.tableFooterView = UIView() 
    } 

    func updateSearchResults(for searchController: UISearchController) { 
     // ignore 
    } 
} 

스토리 보드에서 :이 프로젝트는있는 UITableViewController에 대한 다음과 같은 파일이 있습니다. 결과는 다음과 같습니다.

예상대로 동작이 프롬프트를 설정하는 줄을 주석으로 경우

.

나는 최근에 내가 스위프트 3 사용하여이 동작을 본 것을 기억하지 수 스위프트 4. 내 코드를 업데이트,하지만 난 그게 스위프트에 도입 된 것을 완전히 확신하지 않는다 4.

나는 뭔가를 놓치고 있습니까 코드 또는 버그입니까? viewDidLoad에서

답변

1

설정이 :

self.definesPresentationContext = true 
self.edgesForExtendedLayout = .bottom