UINavigationControllerDelegate 프로토콜 사용과 관련하여 약간의 오해가있을 수 있습니다. 여기에 내 상황이있다 :UINavigationControllerDelegate 구현 문제
나는 ViewController를 가지고있다. PopViewViewroller를 표시 할 수있는 BViewController라고 부르 자. BViewController는 AViewController 다음에 NavigationContoller의 스택에있는 두 번째 ViewController입니다. 사용자가 BViewController의 버튼을 눌렀을 때 App이 이전 뷰인 AViewController로 돌아갈 때 PopoverViewController를 닫아야합니다.
그렇게하려면
, 나는 BViewController가있는 navigationController 안에 그러나 그이 프레임 워크에 의해 직접 호출되지 않는- (void)viewWillDisappear:(BOOL)animated {
NSLog(@"BViewController will disappear");
// Check whether the popoverViewController is visible
if (self.popoverController.popoverVisible==YES) {
[self.popoverController dismissPopoverAnimated:NO];
}
}
BViewController
에서 다음을 구현했습니다. 따라서, 내있는 navigationController와 UINavigationControllerDelegate을 등록하고 다음과 같은 두 가지 방법을 구현 :- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// Pass the message on to the viewController in question
[viewController viewWillAppear:animated];
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// Pass the message on to the viewController in question
[viewController viewWillDisappear:animated];
}
그러나,이 두 방법에서의 ViewController의 매개 변수에 전달 된가 표시되기 전에 한 것 같다. 두 번째 방법을 사용하면 사라질 것으로 예상되는 액세스 권한을 얻을 수 있습니다. 그래서, 사용자가 앞에서 설명한 버튼을 눌렀을 때 viewWillDisappear는 AViewController에서 호출되고 BViewController에서는 사라질 것입니다. 그게 맞는 것 같니? 사과 설명서는 두 경우 모두를 참조합니다.
보기 및 탐색 항목 속성이 표시되는보기 컨트롤러입니다.
... 상당히 명확하지 않다고 생각합니다. 도움을 주셔서 감사합니다.
감사합니다. 그것은 의미가 있지만 그럼에도 불구하고 조금 실망 스럽습니다. – McKrassy