매인이 되는 ViewController파일 내에 서치컨트롤러 인스턴스를 생성한다.
서치바 설정 관련된 함수를 선언한다.
// MARK: - 서치 컨트롤러 생성
let searchController = UISearchController()
// 서치바 셋팅
func setupSearchBar() {
navigationItem.searchController = searchController
// 🟥 단순 서치바 사용
searchController.searchBar.delegate = self
// 대문자 생성 방지
searchController.searchBar.autocapitalizationType = .none
}
// MARK: - 네트워크 매니저 선언 (싱글톤)
var networkManager = NetworkManager.shared
// MARK: - 영화 데이터를 다루기 위한 배열 선언 (빈 배열로 생성)
var movieArray: [Movie] = []
서치바의 대리자를 ViewController로 선언함에 따라 이와 관련해서 ViewController를 extension 하여
함수를 선언한다.
extension ViewController: UISearchBarDelegate {
// 유저가 글자를 입력할 때마다 결과가 나오는 메서드
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
print(searchText)
self.movieArray = []
// 네트워킹 시작
networkManager.fetchMovie(searchTerm: searchText) { result in
switch result {
case.success(let movieDatas):
self.movieArray = movieDatas
DispatchQueue.main.async {
self.movieTableView.reloadData()
}
case.failure(let error):
print(error.localizedDescription)
}
}
}
}
'UIKit > 기본' 카테고리의 다른 글
아이튠즈 API를 통해 영화 정보 얻어오기 (0) | 2024.04.26 |
---|---|
공공 API를 어떻게 갖고 오나? (공공 API를 GET 하는 방법) (0) | 2024.04.09 |
Filemanager로 CRUD 해보기 (1) | 2024.04.04 |
네비게이션 바 + 탭 바 적용 (0) | 2024.03.29 |
Drawing Cycle (+ Layout Cycle) (0) | 2024.03.28 |