2016-12-05 9 views
1

Xcode 8 (버전 8.1 (8B62))을 사용하여 iOS 10 용으로 개발 중이며 tableView 위에 고정 된 searchBar을 표시하는보기 컨트롤러를 개발하려고합니다. 초기 레이아웃이 있지만 searchBar을 활성화하면 내보기에서 완전히 사라집니다.SearchController SearchBar가 화면에서 사라짐

View 
| 
|---- UISearchBar 
| 
|---- UITableView 

여기에이 같은 모습입니다 :

initial layout

이제 문제를

여기 내보기 컨트롤러의 뷰 계층 구조이다. UISearchDisplayController이있는 것처럼 UISearchController을 포함하는 인터페이스 작성기 도구가 없기 때문에 프로그래밍 방식으로 내보기 컨트롤러의 viewDidLoad 메서드에서 searchBar을 프로그래밍 방식으로 추가하고 있는데 나는 searchController.searchBar을 사용하여 스토리 보드에서 사용하는 임시 UISearchBar를 대체합니다. :

activated searchBar

: 나는 응용 프로그램을 실행하고 내 searchController에 부착 된 searchBar 개체를 활성화 할 때

// attribute to store the searchController 
var searchController: UISearchController! 

// temporary searchBar from storyboard 
@IBOutlet weak var tempSearchBar: UISearchBar! 

... 

override func viewDidLoad() { 
    super.viewDidLoad() 

    searchController = UISearchController(searchResultsController: nil) 
    searchController.searchResultsUpdater = self 
    searchController.searchBar.frame = tempSearchBar.frame 
    tempSearchBar.removeFromSuperview() 
    view.addSubview(searchController.searchBar) 
} 

, 그것은보기에서 사라

tableView도 이상하게 이동하지만 내 주안점은 searchBar이보기에 있어야합니다. 나는이 일을하기 위해 몇 가지 다른 것들을 시도했지만, 나는 운이 없다. 어떤 도움이라도 대단히 감사합니다. 나는 구현하기가 어렵지 않아야한다고 생각합니다. 나는 UISearchDisplayController 객체로 잘 처리 할 수 ​​있지만 그 사용은 권장되지 않으며 좋은 프로그래머가 되려고 노력하고 있습니다.

답변

0

당신과 동일한 문제가있는 임. 문제는 searchBar의 프레임을 수동으로 설정하는 데 있습니다. 스토리 보드에 임시 검색 창이 필요합니까?

override func viewDidLoad() { 
super.viewDidLoad() 

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
tableView.tableHeaderView = searchController.searchBar 
} 
:

이 당신이 프레임을 설정하는 코드를 제거하고 코드에 스토리 보드에서의 tableview를 연결 해결하려면