我正在使用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];
答案 0 :(得分:1)
使用self来解除和调用imagepickerviewcontroller,而不是使用self.navigationController。
答案 1 :(得分:0)
您应该在imagePickeController
而不是self
上展示self.navigationController
。
[self presentViewController:imagePickerController animated:YES completion:^{
DLog(@" after presenting self:%@",self.navigationController.viewControllers);
}];
并相应地驳回它:
////Closing it
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
DLog(@"self.navigationController:%@",self.navigationController.viewControllers);
[self dismissViewControllerAnimated:YES completion:^{
}];
}