그래서 내 navigationItem에 searchcontroller가 있습니다.탐색 항목의 검색 컨트롤러가 혼동스러운 동작
// View controller
var searchController = UISearchController(searchResultsController: nil)
// viewWillAppear()
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
}
if employeeSearchList.count > 10 {
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
tableView.tableHeaderView = searchController.searchBar
}
} else {
if #available(iOS 11.0, *) {
let search = UISearchController(searchResultsController: nil)
navigationItem.searchController = search
navigationItem.searchController = nil
} else {
tableView.tableHeaderView = nil
}
}
UIView.animate(withDuration: 0.50, animations: {
self.view.layoutIfNeeded()
})
}
이 코드는 완벽하게 실행됩니다. 개수가 10보다 작 으면 searchController가 설정되고, 그렇지 않으면 빈 searchController로 설정된 다음 nil로 설정되어 UI에서 사라집니다. 내가이 하나 위의 ViewController을 제시하고이를 기각 할 때
// viewDidLoad()
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.tintColor = tintColor
// Table view editing delegate -> delete operation
if employeeSearchList.count < 10 {
if #available(iOS 11.0, *) {
let search = UISearchController(searchResultsController: nil)
navigationItem.searchController = search
navigationItem.searchController = nil
} else {
tableView.tableHeaderView = nil
}
UIView.animate(withDuration: 0.50, animations: {
tableView.reloadData()
self.view.layoutIfNeeded()
})
}
이제 내 문제가되면, viewWillAppear 잘 실행하지만 searchController는 표시되지 않습니다. 그러나 내가 viewController를 밀고 돌아 오면, 그것은 나타난다.
2 가지 작업의 주요 차이점은 무엇입니까? (push/pop & present/dismiss)
나는 어떤 경우에도 여분의 함수, 델리게이트 등이 호출 될 것이라고 기대했다. –