Skip to content

Conversation

@AKAPUCH
Copy link
Contributor

@AKAPUCH AKAPUCH commented Jun 30, 2023

새로 시도해본 내용

navigation bar에 UISearchController 구현하기

검색 기능, 스코프 바 선택 시 필터링

  • UISearchResultsUpdating 프로토콜의 updateSearchResults 메서드를 통해 검색 바 변화를 감지해 검색 결과가 업데이트되도록 했습니다.

    • 처음엔 UISearchControllerDelegate 프로토콜의 selectedScopeButtonIndexDidChange 메서드도 구현하였으나, scope 버튼의 변화를 searchBar의 프로퍼티만으로도 감지할 수 있었기 때문에 사용하지 않았습니다.
  • 텍스트 입력 시 해당 단어(소문자로 변환)가 포함된 데이터가 있는지, 스코프 변경 시 해당 스코프 명의 카테고리인 데이터가 있는지 검사하고 데이터 모델을 변경합니다.

  • 데이터 모델의 변경사항을 반영하기 위해 테이블 뷰의 performBatchUpdates, reloadSections 메서드를 사용했습니다.

    • reloadData를 사용하는 방법도 있으나, 전자의 방법이 훨씬 자연스럽고 부드러운 애니메이션 효과를 보여주기 때문에 performBatchUpdates, reloadSections 를 사용했습니다.

간접 세그웨이로 화면 전환하기

  • navigationController를 통해서만 화면 전환을 주로 사용했었는데, 학습 목적으로 세그웨이를 사용해 봤습니다.
  • 코드로만 구현했을 땐 몰랐으나, @IBOutlet으로 스토리보드와 연결된 프로퍼티들은 화면 전환 전에는 접근이 불가능했기 때문에, 모델 객체(Candy)를 통해 넘겨줘야 했습니다.

하면서 알아낸 내용

navigationController.navigationItem으로 접근하면 안되는 이유

  • self.navigationItem의 메서드나 프로퍼티 사용시 잘 적용되나 이상하게 navigationController.navigationItem으로 접근하니 UI에 변화가 없었습니다.
  • navigationController.navigationItem은 네비게이션 컨트롤러 객체 그자체 프로퍼티에 접근합니다. 우리가 현재 사용하는 화면의 navigationItem과 무관하기 때문에 주의해야 합니다.

상태바 색 변경하기

  • 레퍼런스를 확인했을 때 상태 바의 색이 흰색이었기 때문에 추가 설정이 필요했습니다.
  • 프로젝트 설정 - Info 탭에서 View controller-based status bar appearance, Status bar style Key값을 추가하였습니다.
    설정

아쉬웠던 점

  • 구현 완료 후 레퍼런스 앱 코드를 보니 UISplitVIew를 사용해서 구현하고 있었습니다.. 다음 프로젝트에서도 스플릿 뷰를 사용하기 때문에 아쉬운 대로 넘어가야 할 것 같습니다😭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant