モーダルとして呼び出す3つのviewControllerを持つnavigationControllerがあります。
最後のviewControllerに到達したら、モーダルnavigationControllerを閉じてpresentingViewControllerでいくつかのアクションを実行するdoneButtonを押したいと思います。presentingViewControllerは3つの異なるタイプにすることができます。
したがって、最後のviewControllerのdoneActionで、presentingViewControllerが何であるかをテストしたいのですが、presentingViewControllerを要求すると(null)になります。
これは、私の問題を示す NSLogs を使用したテスト コードです。
- (IBAction)doneAction:(id)sender {
[self dismissViewControllerAnimated:YES completion:^(void){
NSLog(@"nav VC count : %u", self.navigationController.viewControllers.count);
NSLog(@"nav nav VC count : %u", self.navigationController.navigationController.viewControllers.count);
NSLog(@"presenting VC: %@", NSStringFromClass(self.presentingViewController.class));
NSLog(@"nav VC: %@", NSStringFromClass(self.navigationController.class));
NSLog(@"nav presenting VC: %@", NSStringFromClass(self.navigationController.presentingViewController.class));
}
そして出力:
2013-09-25 14:44:40.819 Twinkler[10636:a0b] nav VC count : 3
2013-09-25 14:44:40.819 Twinkler[10636:a0b] nav nav VC count : 0
2013-09-25 14:44:40.819 Twinkler[10636:a0b] presenting VC: (null)
2013-09-25 14:44:40.820 Twinkler[10636:a0b] nav VC: UINavigationController
2013-09-25 14:44:40.820 Twinkler[10636:a0b] nav presenting VC: (null)
利用できない理由を知っている人はいますか?
前もって感謝します。