contentoverController에 Popover 개체를 할당하고 콘텐츠 뷰 컨트롤러에있는 단추에 닫기 코드를 넣습니다. UIPopoverController 위임이 해제 될 때 호출되지 않음
이 버튼을 누르면 :[self.popover dismissPopoverAnimated:YES];
가 호출되고 팝 오버가 그라운드를 떠납니다. 그러나 대리자의 메서드는 자동으로 호출되지 않습니다. 나는 그것이 대의원을 정하지 않고 있다고 생각했지만 거기에있다. 내가 dismissPopoverAnimated 선 후 다음 줄을 추가 할 경우 대리자가 "자동으로"대리인의 메소드를 호출하지 않는 이유 이해가 안
[self.popover.delegate popoverControllerDidDismissPopover:self.popover];
... 제대로이라고합니다. 어떻게 이런 일이 발생할 수 있습니까?
당신은 프로토콜 대표자에 대해 이야기하고 있다고 가정합니까? 그것이 작동하는 방법입니다. 프로토콜에 정의 된 메서드를 대리자에 대해 실행하려면 [delegate protocolMethod]를 사용하여 대리자에게 명시 적으로 지시해야합니다. 메소드를 실행할 위치에서 프로토콜에 10 가지 방법이 있다고 상상해보십시오. 이 시나리오에서는 대표자가 10 가지 방법을 모두 실행하지 못하도록할까요? 따라서 메서드가 하나만 정의되어 있어도 호출 할 메서드를 추측 할 수 없습니다. – Zhang
일반적으로 dismissPopoverAnimated 메소드를 사용하면 popover가 해제 된 후 popoverControllerDidDismissPopover 메소드 자체가 자동으로 호출됩니다. 이것이 UIPopoverController가 해고에 관해 우리에게 제시하는 방식입니다. – frankish
가능한 복제본 : [위임을 호출하지 않습니다 : -dismissPopoverAnimated : UIPopoverController를 해제 하시겠습니까?] (http://stackoverflow.com/questions/3567033/dismissing-uipopovercontroller-with-dismisspopoveranimated-wont-call-delegate) –