2011-02-28 6 views
0

나는 탭 막대 응용 프로그램을 가지고 있고 2 개의 탭은 동일한 클래스 (다른 인스턴스)를 사용하여 UITableView를 표시합니다. 어느 탭을 클릭하면 몇 가지 사소한 변경 사항이 외관, 기능 등을 이루어집니다. 내가 가진 문제는 UITableView에서 모달보기를 보여 주며 그것이 기각 될 때 NSNotification을 게시하여 UITableView를 다시로드합니다 (UITableView의 뷰 컨트롤러),하지만 2 개의 NSNotifications를 게시 할 때 앱에 동일한 클래스의 인스턴스가 2 개 있기 때문에 게시했습니다. 알림이 호출 된 인스턴스에만 게시되도록하려면 어떻게합니까? 당신이 NSNotification에 대한 처리기를 설정할 때NSNotification ... 올바른 방법으로?

+0

'내 앱에 동일한 통화의 인스턴스가 2 개 있습니다.'라는게 무슨 의미입니까? 조금 더 구체적 일 수 있습니까? – FreeAsInBeer

+0

죄송합니다. '수업'이 '전화하지 않습니다' – Darthtong

답변

3

당신은 누구의 통지에 관심이에 대한 object을 지정할 수 있습니다.

을 경우에만 특정에서 게시 된 통지에 관심이있을 수에 첫 번째 테이블 뷰 컨트롤러를 설정해야합니다

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(handler:) 
              name:notificationName 
              object:instanceOfModalViewController]; 

이 방법 알림은 다음과 같습니다 만에 모달 뷰 컨트롤러, 그리고 두 번째 테이블 뷰 컨트롤러의 인스턴스는 모달 뷰 컨트롤러의 특정 인스턴스에서 게시 된 통지에 관심이있을 모달보기 컨트롤러에서 게시 한 경우 관심을 지정한 테이블보기 컨트롤러 만 알림을 처리합니다.

+0

아, 그 말이 맞습니다. 모달보기를 표시하는 버튼을 누를 때 알림을 복제하지 않도록 다른 장소에서 dealloc에 ​​대한 알림을 제거해야합니다 (알림을 지금 작성하는 곳입니다). – Darthtong

+0

'NSNotificationCenter'에 모달 뷰 컨트롤러를 표시하는 것처럼 듣기를 시작한다고 알려야합니다. 그런 다음 통지를 처리 ​​한 직후에 ([[NSNotificationCenter defaultCenter] removeObserver : self name : notificationName 객체 : instanceOfModalViewController];)를 호출하여 청취를 중단해야합니다. – Jasarien

+0

알림이 항상 호출되지는 않기 때문에 다른 방법으로 제거해야 할 것입니다. 모달 뷰가 닫히기 때문에 도움을 주셔서 감사합니다! – Darthtong

관련 문제