navigationItem.searchController
iOS 11의 UITableViewController 속성에 UISearchController를 연결하고 있습니다 . 이것은 잘 작동합니다. 멋진 iOS 11 스타일의 검색 창을 사용할 수 있습니다.
그러나 시작시 검색 표시 줄을 표시하고 싶습니다. 기본적으로 사용자는 검색 창을 보려면 테이블보기에서 위로 스크롤해야합니다. 이것이 어떻게 가능한지 아는 사람이 있습니까?
왼쪽 : 출시 후 기본 상황. 오른쪽 : 검색 표시 줄이 표시됩니다 (위로 스크롤). 오른쪽 스크린 샷과 같이 시작 후 검색 표시 줄을 표시하고 싶습니다.
hidesSearchBarWhenScrolling
내 탐색 항목 의 속성 을 false 로 설정하여 검색 창을 표시 할 수 있음을 이미 발견했습니다 . 그러나 이렇게하면 아래로 스크롤해도 검색 표시 줄이 항상 표시됩니다. 이것은 제가 원하는 것이 아닙니다.
답변
다음은 검색 창을 처음에 표시 한 다음 스크롤 할 때 숨길 수 있도록합니다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if #available(iOS 11.0, *) {
navigationItem.hidesSearchBarWhenScrolling = false
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if #available(iOS 11.0, *) {
navigationItem.hidesSearchBarWhenScrolling = true
}
}
를 사용하면 isActive
내가 원하는 작업을 수행하지 않고 검색 창을 활성화 (취소 버튼 표시 등) 할 수 있습니다.
답변
에 searchController를 추가 한 후 속성 isActive
을로 설정할 수 있습니다 .true
navigationItem
다음과 같이 :
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
searchController.isActive = true
}
답변
나를 위해 viewDidLoad()
방법에 다음 줄을 추가 한 후에 작동했습니다 .
navigationController?.navigationBar.prefersLargeTitles = true
navigationController!.navigationBar.sizeToFit()
답변
iOS 13에서는 @Jordan Wood의 답변이 작동하지 않았습니다. 대신 나는했다 :
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.performWithoutAnimation {
searchController.isActive = true
searchController.isActive = false
}
}
답변
