---
# System prepended metadata

title: 큐마켓 - 검색어 자동완성 뷰

---

# 큐마켓 - 검색어 자동완성 뷰


| 자동완성 | 일치하는 글자 하이라이트 | 추천검색어 없을 때|
| :--------: | :--------: | :-------: |
| ![](https://hackmd.io/_uploads/ryv-tmTR3.png)     | ![](https://hackmd.io/_uploads/HkwWKXpRh.png)     | ![](https://hackmd.io/_uploads/B1PbKQTA3.png)     |

## 구현 방법
1. 테이블 뷰를 적용해서 터치 시 셀의 이름을 검색어로 해서 serch해야함
2. 검색어와 같은 일치하는 글자는 하이라이트를 넣어줘야 함
3. 추천검색결과가 없을 때는 보이지 않음

### 고민되는 부분
1. 현재 이미 searchController가 존재함
2. 두개의 searchController를 적용할 수 있는지 
3. 하나의 serchController에서 테이블뷰를 위에 덮은 다음 hidden처리를 하는게 맞을지 고민중
4. 근데엔으 둘다 크게 차이가 없어 보이긴 함.
5. 둘중에 어떤 방법이 더 맞을 지 궁금.


### 방안
1. 테이블뷰를 덮어서 분기처리를 통해 hidden처리 하기(내가 생각한 방법)
    - 고문님은 선호하지 않는 방법.
    - 왜 선호하지 않는지 정확히 이유는 듣지 못했다. 다시 물어봐야 할듯
    - 내가 봤던 WWDC영상에서 뷰를 랜더링 하는 것 중 가장 성능상으로 좋은건 isHidden처리 라고 했다. (고문님도 동의함)

2. 컬렉션뷰에서 데이터를 갈아끼우는 방식 (고문님 추천)
- 하나의 컬렉션뷰에서 데이터와 레이아웃을 갈아끼우는 방식으로 진행되어서 코드는 깔끔할 수 있을 것 같다
- 하지만 하나의 컬렉션뷰에서 리로드 데이터를 하는 방식은 계속 뷰를 다시 그려야 하는 상황이 나올 수 있다.(이게 성능상 이점이 isHidden방식보다 떨어지는 이유)
    - 성능최적화가 중요하다면 히든처리를 할 것 같다.

3. 쿠팡같은 여러 업체에서 이용하는 방법
- 서치 뷰컨트롤러를 선택했을때 새로운 서치 뷰컨트롤러로 이동하는 방법도 있다.
- 서치바가 활성화되면 새로운 서치 뷰컨트롤러로 이동하는 방법
    - 이동할때 기존과 같은 유저 경험을 줘야 하기 때문에 애니메이션 등에 신경을 많이 써야 할 것 같다.