UINavigationController
에있는 모달로 표시된 viewController를 계층 적으로 모르는 방법을 찾고있었습니다. 그래서 나는 다음과 같이 while 루프까지 종료 :UINavigationController의 모든 표시된 ViewController를 계층 적으로 닫습니다.
스위프트
while(navigationController.topViewController != navigationController.presentedViewController) {
navigationController.presentedViewController?.dismiss(animated: true, completion: nil)
}
목표 - C
나는presentedViewController
까지 하나 모든
presentedControllers
을 기각 할
while(![self.navigationController.topViewController isEqual:self.navigationController.presentedViewController]) {
[self.navigationController.presentedViewController dismissViewControllerAnimated:YES completion:nil];
}
topViewcontroller
이 동일 해집니다.
문제는 해제 한 후에도 navVC.presentedViewController
이 변경되지 않는다는 것입니다.
해고 한 후에도 여전히 동일하게 유지되고 결국 infiniteLoop
이됩니다.
어디에서 문제가 발생했는지 아는 사람이 있습니까?
을 나는 당신의 문제는 통지가 사용자로부터 도청 동안 발표 뷰 컨트롤러를 닫 생각! 권리? 왜 View Controller를 해제해야하는지 설명 할 수 있습니까? – Mannopson
예, 정확하게. 통지가 두 드렸을 때 requestedViewController를 푸시 할 수 있으려면 NavigationController의 topViewController로 돌아 가야합니다. – Mina
@Mina 그렇다면? 원격 또는 로컬 알림을 누를 때보기 컨트롤러에 알림을 게시하여이를 수행 할 수 있습니다. 관찰자를 생성해야합니다 (Presented View Controller). 그리고 확인 : 현재보기 컨트롤러가 제시된보기 컨트롤러 인 경우? 그런 다음 당신은 그것을 기각 할 수 있습니다. – Mannopson