2017-10-02 2 views
1

이 뷰를 닫을 때 다른 뷰에서 함수를 호출하는 방법을 찾고있을 때 NotificationCenter가 좋은 솔루션이라는 것을 알았으므로 다음과 같이 사용하려고했습니다 :추가 관찰이 스위프트 4에서 작동하지 않습니다.

나는이 넣어 함수를 호출 할 내 홈페이지보기 (의 ViewController)에서

:

NotificationCenter.default.post(name: NSNotification.Name("loyalty"), object: nil) 
: 나는이 전화 self.dismiss(animated: true, completion: nil)를 호출하기 전에 내 두 번째 관점에서

NotificationCenter.default.addObserver(
      self, 
      selector: #selector(ViewController.loyalty), 
      name: NSNotification.Name("loyalty"), 
      object: nil) 

는 관찰 트리거 할 0

마지막으로 빠른 4 업데이트 후 내 기능 loyaltyfunc 전에 @objc이 있고이 같다 : 나는 NSNotification.Name으로도 시도

@objc func loyalty(){ 
} 

PS (rawValue : "충성") 아마

내가 뭔가를 깜빡 했니?

미리 감사드립니다.

편집 :

기능은 좀 배열을 제거하는 것을 잊었다 결국 실행하고 있었고, 난 그것이 작동하지 않을 줄 알았는데 그 이유는.

+0

아마도 'viewWillDisappear'에서 관찰자를 제거하고있을 것입니다. – the4kman

+0

@ the4kman 귀하의 의견을 보내 주셔서 감사하지만 그것을 (나는)을 확인하지 않았을 제거 –

+0

코드에서 어딘가에 관찰자를 제거 하시겠습니까? – the4kman

답변

2

이 함수에는 호출 할 매개 변수가 있어야한다고 생각합니다.

시도는 귀하의 기능을 편집 :

@objc func loyalty(_ notification : NSNotification){ 
} 

그리고 선택은 #selector(ViewController.loyalty(_:)

NB된다 : 두 register/post이 같은 Thread

+0

당신의 답변과 좋은 정보를 주셔서 감사합니다! 함수는 결국 실행했지만 올바른 결과를 얻으려면 배열을 지우는 것을 잊어 버렸습니다. (나는 기능의 시작 부분에서 인쇄물을 발견했다.) 시간을 낭비해서 죄송합니다 ... –

2

애플 설명서에 호출 할 필요가 말했다 :

OS X 1 0.11 및 iOS 9.0 NSNotificationCenter 및 NSDistributedNotificationCenter는 더 이상 할당 해제 될 수있는 등록 된 옵서버에게 알림을 보내지 않습니다.

컨트롤러가 알림을 받기 전에 dismiss 다음에 할당 해제 된 것 같습니다.

+0

답변과 좋은 정보를 주셔서 감사합니다! 함수는 결국 실행했지만 올바른 결과를 얻으려면 배열을 지우는 것을 잊어 버렸습니다. (나는 기능의 시작 부분에서 인쇄물을 발견했다.) 시간 낭비해서 죄송합니다 ... –

관련 문제