私は presentViewController:imagePickerController を使用して UIImagePickerController を表示しています。何らかの理由で、そのコントローラーを閉じると、元のナビゲーションコントローラーがスタックを失い、アプリケーションがルートビューコントローラーに戻ります。
self.navigationController.viewControllers をログに記録しています。presentViewController:imagePickerController 行を実行した後、ナビゲーション コントローラーがルート コントローラーを除くすべてのコントローラーを失っていることがわかります。
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
imagePickerController.sourceType = sourceType;
imagePickerController.delegate = self;
imagePickerController.navigationBarHidden = YES;
self.imagePickerController = imagePickerController;
DLog(@"self.navigationController:%@",self.navigationController.viewControllers);
[self.navigationController presentViewController:imagePickerController animated:YES completion:^{
DLog(@" after presenting self.navigationController:%@",self.navigationController.viewControllers);
}];
////閉じる
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
DLog(@"self.navigationController:%@",self.navigationController.viewControllers);
[self.navigationController dismissViewControllerAnimated:YES completion:^{
}];
}
/////私のNCがセットアップされている場所
OFMainViewController *mainController = [[OFMainViewController alloc]init];
mainController.managedObjectContext = self.managedObjectContext;
navigationController = [[UINavigationController alloc]initWithRootViewController:mainController];
[self.window setRootViewController:navigationController];