[iOS] - NotificationCenter로 즐겨찾기 구현하기

sun02·2022년 1월 6일
0

iOS

목록 보기
7/27

NotificationCenter란?

등록된 이벤트가 발생할 때 해당 이벤트에 대한 행동을 취하는 것으로
앱 내의 어디에서 이벤트를 던져도
해당 이벤트를 어디에서나 받아 행동을 취할 수 있게해줍니다.

NotoficationCenter를 이용해서 즐겨찾기 기능을 구현해보겠습니다.

다음과 같이 일기장 탭의 DiaryDetailView에 즐겨찾기 버튼이 있고,
DiaryDetailView에서 즐겨찾기 버튼을 누르면
즐겨찾기 탭에 다이어리가 추가되는 코드를 작성해보겠습니다.

1. NotificationCenter 등록하기

DiaryDetailView에서 즐겨찾기 버튼을 누르는 이벤트를 발생시키면,
그 이벤트를 Observe하고 있는 즐겨찾기탭의 View에 다이어를 추가해야하므로,

DiaryDetailViewController의 즐겨찾기 버튼 action에 NotificationCenter를 등록합니다.

  • name: Notification의 이름
  • Object: Notification이 Observer에게 전달하는 객체
    • 즐겨찾기여부를 고려하는 diary, 즐겨찾기 여부, 다이어리의 uuid 를 전달합니다.

2. Notification Observer 등록

이벤트를 구독하고 있는 즐겨찾기 탭의 StarViewController에 Observer를 등록합니다.

StarViewController의 viewDidLoad()에 구독하는 notification을 추가합니다.

  • observer: self(해당 이벤트를 구독하는 StarViewController)
  • selector : 해당 이벤트 발생 시 실행할 action
  • name: notification 이름
    • 1번에서 작성한 name과 같아야합니다

3. Selector 작성

해당 이벤트가 발생했을 때 실행할 메서드를 작성해줍니다.

1번에서 notification이 발생할 때 보냈던 Object를 불러옵니다.

  • object를 Dictionary타입으로 작성해 주었기 때문에, StarDiary라는 딕셔너리에 object를 모두 받아옵니다.
  • 딕셔너리 키를 사용해서 diary, isStar, uuidString을 받아옵니다.
    • isStar(true)인 경우 새로 즐겨찾기가 된 다이어리이므로, diaryList에 추가해줍니다.
    • !isStar(false)인경우, uuidString을 사용해서 다이어리의 index값을 받아 해당 index의 다이어리를 삭제하고, collectionView에서도 삭제해줍니다.

4. 구현 화면

0개의 댓글