[iOS/Swift] NotificationCenter를 이용하여 화면을 갱신해 보자

Nakyung Lee·2023년 8월 12일
0

iOS

목록 보기
9/14

📍 NotificationCenter란?

NotificationCenter(알림 센터)는 iOS 및 macOS에서 컴포넌트 간의 통신을 쉽게 할 수 있도록 도와주는 기능이다.

이를 통해 한 컴포넌트에서 발생한 이벤트나 데이터 변화를 다른 컴포넌트에게 알릴 수 있다.

NotificationCenter를 사용하면 효율적으로 앱 내부의 상태 변화를 관리하고, 뷰 컨트롤러 간의 데이터 전달 등을 간편하게 처리할 수 있다!

🤔 사용 이유

닉네임을 수정하고 이전 화면인 마이페이지로 돌아가면 화면이 갱신되지 않아 수정 전 닉네임이 그대로 보여지는 문제가 발생했고, NotificationCenter를 이용하여 이를 해결하고자 했다.

🧑‍🏫 사용 방법

1️⃣ 알림 이름 정의

업데이트를 전달할 때 사용할 고유 알림 이름을 정의해 준다.

extension Notification.Name {
    static let dataUpdated = Notification.Name("dataUpdated")
}

2️⃣ 업데이트를 수신할 곳에서 옵저버 등록

업데이트를 수신하고자 하는 화면(또는 컴포넌트)에서 NotificationCenter에 옵저버를 등록해 주고, 알림 이름과 대응하는 처리 메서드를 설정한다. 이때 옵저버 등록하는 코드(addObserver)는 viewDidLoad 내에 작성해 주면 된다.

NotificationCenter.default.addObserver(self, selector: #selector(handleDataUpdate), name: .dataUpdated, object: nil)

@objc func handleDataUpdate() {
    // 업데이트를 처리하는 작업을 수행
    // 나는 이곳에 회원 정보를 불러와 이름 label에 넣어주는 작업을 수행했다
    // 이 메서드는 업데이트 알림이 수신될 때마다 호출
}

3️⃣ 업데이트가 발생했을 때 알림 보내기

데이터를 갱신하거나 업데이트해야 할 때, NotificationCenter에 알림을 보낸다!

NotificationCenter.default.post(name: .dataUpdated, object: nil)

4️⃣ 옵저버 해제

옵저버가 더 이상 필요하지 않을 때는, 반드시 해당 옵저버를 NotificationCenter에서 해제해야 한다. 일반적으로 deinit 메서드 내에서 해제 작업을 수행한다.

deinit {
    NotificationCenter.default.removeObserver(self)
}

✨ 결과

수정 페이지에서 이름을 수정하고 저장을 누르면 바로 전 화면인 마이페이지로 돌아가게 되고, 수정 후 이름으로 갱신되어 나타난다!

profile
앱 개발자를 꿈꾸는 ✨

0개의 댓글