2014-01-14 4 views
0

모달 뷰 컨트롤러가 있습니다. 닫히기 바로 전에 상위 뷰 컨트롤러에 업데이트 할 것을 알리는 대리자 메서드를 호출해야합니다. (예 : viewWillAppear과 같은 메소드는 모달 뷰 컨트롤러를 닫을 때 호출되지 않습니다.)해고하기 전에 대리모 메서드를 호출하십시오.

그래서 내 코드는 다음과 같습니다

[delegate addEquipmentDidSave:YES]; 
[self dismissViewControllerAnimated:YES completion:nil]; 

매우 간단합니다. 메시지를 다시 보내서 지금 업데이트하십시오! 그런 다음보기를 닫으십시오. 그러나이 두 줄을 모두 호출하는 동안 대리자 메서드는 실행되지 않습니다. 그래서 저는 위임자가 올바르게 설정했는지 확인합니다. 모달 뷰를 표시하면 대리자가 설정되므로 모든 뷰가 연결됩니다.

마치보기가 닫히기 전에 대리자 메서드가 실행될 기회가없는 것입니다. 이것이 가능한가? 문제가 뭐라고 생각하니?

감사합니다.

+0

을가 사용할 수 있는지 여부를 확인 여부를 호출하기 전에? – Wain

+0

위임 관련 항목이 괜찮 으면 대리자 메서드 내에서보기를 닫으려고하십시오. –

+0

@C_X 이유가 무엇입니까? 이미 해고 방법에 사용할 수있는 완료 블록이있을 때? – Abizern

답변

3

코드를 실행하기 위해 올 때 대리자 방법은 먼저 대리자가 설정되어 있는지 확인 했

if ([self.delegate respondsToSelector:@selector(addEquipmentDidSave:)]) 
{ 
    NSLog("Yes it's available"); 
    [self.delegate addEquipmentDidSave:YES]; 
} 

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

나는'respondsToSelector'를 어떻게 사용하는지 알지 못했고, 문제를 일으켰습니다! 나는 두 장소에서 모달보기를 제시했다. 위임자를 올바르게 하나만 설정합니다. –

0

마지막 매개 변수 인 completion을 볼 수 있습니까? 이 블록은 뷰 컨트롤러가 닫힌 후에 호출됩니다. 거기서하고 싶은 일을하십시오.