7

같은 클래스에서 관찰자와 핸들러를 추가하는 방법에 대한 몇 가지 예를 보았습니다. 그러나 첫 번째 뷰에 옵저버를 추가 할 수 있는지 알고 싶습니다. 컨트롤러 및 두 번째보기 컨트롤러에서 처리 할 수 ​​있습니까?첫 번째 뷰 컨트롤러에 'addObserver'(NSNotificationCenter)를 추가하고 두 번째 핸들

첫 번째보기 컨트롤러와의 거리를 계속 보내고 두 번째보기 컨트롤러에서 처리하고 싶습니다. 보조보기로 추가 된 두 번째보기 컨트롤러 : addSubview, addChildViewController.

이것은 Android에서 방송되는 것과 같습니다.

+0

왜 그렇습니까? 이것은 NSNotificationCenter의 목적 *과 정확히 일치합니다. –

답변

21

예 가능합니다. NSNotificationCenter 정확히 그런 식으로 작동합니다.

첫 번째로, 아래와 같이 첫 번째보기 컨트롤러에 수신기를 등록해야합니다.

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil]; 
} 

-(void)somethingHappens:(NSNotification*)notification 
{ 

} 

둘째, 두 번째보기 컨트롤러에서 다음과 같이 알림을 게시하십시오.

[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj]; 

시스템에서 모든 수신자에게 알림을 브로드 캐스팅합니다.

+0

조금 혼란 스럽다. '모두 괜찮다, 이벤트 처리'라고 말하고 싶을 때 'postNotificationName'을 사용한다. 그러나 'somethingHappens'는 두 번째보기 컨트롤러에 있어야합니다. 올바른 코드에 어떤 코드가 있어야하는지 명확히하기. –

+1

viewcontroller A에서 viewController B로 알림을 보내려면 뷰 컨트롤러에서 포스트 통지를 사용하고 리스너를 등록하고 B에서 처리해야합니다. 알림이 게시 될 때마다 somethingHappens 메서드가 자동으로 호출됩니다. 그 메소드에 리스너를 등록하십시오. – taffarel

+0

OK, 감사합니다. –