2017-12-07 7 views
0

를받을 수 없습니다.모달 UIViewController에 내가 모달 UIViewController에이 NSNotifications

그리고 물론, 이러한 통지의 옵저버 :

NotificationCenter.default.addObserver(self, selector: #selector(RecoveryViewController.userVIP), name: userDataIsHere, object: nil) 

그러나 아무것도 발생하지 않기 때문에 내 모달의 ViewController는 모든 알림을 수신 할 수없는 것 같다. 부모의 UIViewController (모달이 아닌)에 그러한 관찰자를 추가하려고하면 같은 시간에 매력 (실제로, 내가 확인한 것)이 작동합니다.

내 알림 매우 간단

let userDataIsHere = Notification.Name("userDataIsHere") 
NotificationCenter.default.post(name: userDataIsHere, object: nil) 

은 내가 잘못 여기서 뭐하는 거지?

+0

여기서'NotificationCenter.default.addObserver (self, selector : # 선택자 (RecoveryViewController.userVIP), 이름 : userDataIsHere, object : nil)'을 추가하고 있습니다. init 메소드에서 컨트롤러에 직접 추가하지 않으시겠습니까? –

+0

,'viewDownload','super.viewDidLoad()'바로 뒤 – lithium

+0

'RecoveryViewController.userVIP'는 클래스 메소드를 참조합니다. 선택자는 인스턴스 메소드를 참조해야합니다. 'self.userVIP' 또는'userVIP' 만 – PeejWeej

답변

0

시도해보십시오.

class ViewController: UIViewController { 
    let userDataIsHere = Notification.Name("userDataIsHere") 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     NotificationCenter.default.addObserver(self, selector: #selector(modalPopUp), name: userDataIsHere, object: nil) 
    } 

    @objc func modalPopUp() { 
     let rVC = RecoveryViewController() 
     rVC.modalPresentationStyle = .overFullScreen 
     self.present(rVC, animated: true, completion: nil) 
    } 
} 
0

당신은 가지 아래 확인 완료 확인 :

1) 등록 알림 viewDidLoad에서 :

let notificationName = Notification.Name("NotificationIdentifier") 
NotificationCenter.default.addObserver(self, selector: #selector(yourFunctionName), name: notificationName, object: nil) 

@objc func yourFunctionName(notification: NSNotification){ 
    //do stuff 
    print("Called..") 
} 

2) 우편 통지 여기

1) Notification Registered before use 
2) Notification identifier must be same. 

는 통지를 내 코드입니다 필요할 때 :