2014-10-24 5 views
1

여기 피클이 약간 있습니다. 필자는 ios7.1 용으로 작성된 응용 프로그램을 가지고 있으며 현재 동일한 응용 프로그램 지원을 ios 8.1로 만들려고합니다.UIPopoverPresentationController에서 뷰의 대리자가 응답하지 않습니다.

이 앱에는 여러 가지 팝업이 있습니다. 나는 그들이 iOS8에서 popover로 적절하게 나타나도록하는 수정을 겪었지만 popover를 클릭하면 예상대로 응답하지 않습니다. 프로토콜이 DashboardViewController와 통신하기 위해 선언, _rightNavController에서

if ([segue.identifier isEqualToString:@"showRHSMenu"]) { 
_rightNavController = segue.destinationViewController; 
_rightNavController.preferredContentSize = CGSizeMake(220, (_rightNavController.tableView.rowHeight * _rightNavController.dataArray.count)); 
_rightNavController.modalPresentationStyle = UIModalPresentationPopover; 
UIPopoverPresentationController *popoverPresentationController = _rightNavController.popoverPresentationController; 
popoverPresentationController.delegate = self; 

} 

: DashboardViewController에서

:

여기에 제시되는 방식 (모든 스토리 보드에 매여)입니다. 이것은 작동하고 UIPopoverController를 사용하여 ios7.1에서 실행되지만 UIPopoverPresentationController를 사용하는 iOS8.1에서는 트리거되지 않습니다.

사용자가 rightNavController에서 등록을 클릭했지만 프로토콜/위임이 실행되고 있지 않음을 확인했습니다.

아무도 도와 줄 수 있습니까?

답변

0

이전 질문이지만 잘하면이 도움이됩니다.

오늘 같은 문제가 발생했습니다. 해결책은 로컬 변수가 아닌 인스턴스 변수로 popover 컨트롤러를 선언하는 것입니다. 지역 변수로서, popover 뷰가 여전히 화면에 있는지 여부에 관계없이 메소드가 리턴 한 후에는 언제든지 가비지 콜렉션을 가져옵니다. (가비지 콜렉션은 iOS8에서 훨씬 더 공격적이거나 효율적으로 보이기 때문에 이미 가지고있는 버그가 노출되었을 가능성이 높습니다.) 뷰가 닫힐 때까지 뷰 컨트롤러에 대한 핸들을 유지하면 모든 델리게이트 메소드가 잘 동작합니다.

관련 문제