관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 16. notificationCenter 본문

iOS 기본 (swift)

[iOS - swift] 16. notificationCenter

jake-kim 2020. 7. 11. 10:12

1. 개념

- 특정 객체가 NotificationCenter에 등록된 Event를 발생(post)

- 등록된 Observer들이 Event에 대한 행동을 취하는 것

2. 구현

버튼을 클릭하면 Label이 안보이게 하는 내용

1) post (이벤트 발생)

@IBAction func unhide(_ sender: Any) {
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "unhide"), object: nil, userInfo: nil)
}

2) 이벤트 처리 adObserver

// in the viewDidLoad
NotificationCenter.default.addObserver(self, selector: #selector(unHideLabel), name: NSNotification.Name(rawValue: "unhide"), object: nil)

@objc func unHideLabel() {
    lbl.layer.isHidden = true
}

* userInfo사용할경우,

// 옵저버 등록
let phoneNo = NotificationCenter.default.addObserver(forName: "phoneNumber", object: nil, queue: nil) {notification in
    let phone = notification.userInfo?["phoneNo"] as? String
    print("phone = \(phone)")
}

// 발송자
let userInfo: [AnyHashable: Any] = ["phoneNo":"010-1111-2222"]
 
NotificationCenter.default.post(name: NSNotification.Name("phoneNumber"), 
                                object: nil, 
                                userInfo: userInfo)​

 

Comments