일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- stanford
- xcode
- GIT
- IOS
- 코딩테스트
- 오늘의 색상
- UserDefault
- SwiftUI
- 백준
- UIKit
- 새싹후기
- flutter #state # stateful #stateless
- 조건문
- xml
- 프로그래머스
- CS193p
- colorofdays
- collectionView
- 스위프트
- process
- Swift
- 프로젝트회고
- Masil
- 청년취업사관학교후기
- 스터디
- WidgetTree
- flutter
- ImageSlider
- 알고리즘
- MVVM
Archives
- Today
- Total
개발을 시작하는 이야기
07.SearchController, SegmentControl 설정 본문
SearchController
func setSearchBar() {
searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.placeholder = "숭례문"
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchResultsUpdater = self
self.navigationItem.searchController = searchController
self.navigationItem.hidesSearchBarWhenScrolling = false
}
나는 위의 방식으로 ViewController에서 설정했다. 위에서 몇가지 생소한 기능을 기록으로 남겨둔다.
hidesNavigationBarDuringPresentation : 자동완성 기능
searchResultsUpdater : 검색 결과를 업데이트할 때 이용할 뷰 컨트롤러
navigationItem.searchController : 네비게이션바에 검색바 넣기
navigationItem.hidesSearchBarWhenScrolling : 화면이 스크롤 되는경우 검색바 보이고 감추기 (기본값은 true)
extension SearchViewController: UISearchResultsUpdating{
func updateSearchResults(for searchController: UISearchController) {
let predicate = NSPredicate(format: "ccbaMnm1 CONTAINS[c] %@ OR ccbaMnm2 CONTAINS[c] %@",searchController.searchBar.text!, searchController.searchBar.text!)
searchHeritage = localRealm.objects(Heritage_List.self).filter(predicate)
}
}
ViewController가 검색창에 응답받도록 하기 위해서는 UISearchResultsUpdating을 구현해야 하는데,
이 프로토콜은 사용자가 검색창에 입력한 정보를 기반으로 검색 결과를 업데이트 하는 방법을 정의한다.
updateSearchResults에서는 검색창에 입력한 text를 바탕으로, Realm에서 해당 text를 찾게 된다.
SegmentControl
let segmentControl: UISegmentedControl = {
let array: [String] = ["방문함", "즐겨찾기"]
let control = UISegmentedControl(items: array)
control.selectedSegmentTintColor = .customRed
control.backgroundColor = .clear
return control
}()
View 페이지에서 설정하며, 특징은 버튼의 갯수를 items:array로 하여 설정함
TintColor 는 활성화된 영역의 색상을, BackgroundColor의 경우 비활성화된 영역의 색상을 지정한다.
@objc func segmentControlClicked(_ target: UISegmentedControl){
switch target.selectedSegmentIndex {
case 0:
tasks = localRealm.objects(Heritage_List.self).filter("visited=true")
mainView.tableView.reloadData()
default:
tasks = localRealm.objects(Heritage_List.self).filter("wantvisit=true")
mainView.tableView.reloadData()
}
}
ViewController에서 설정한 값으로, switch문으로 Index값을 가져와서 각각의 영역이 활성화 되었을때의 이벤트를 설정해주었습니다.
'개발 이야기 > 우리동네 문화유산 :: JHeritage' 카테고리의 다른 글
09. 디바이스 세로모드 고정 (0) | 2022.03.13 |
---|---|
08. iOS 개발자 계정 등록 (0) | 2022.03.12 |
06. TableView의 오류 그리고 CellSwipe (0) | 2022.03.10 |
05. Xcode Push Error, API 콜제한 (0) | 2022.03.09 |
04.XMLParser 02 (0) | 2022.03.08 |