在iOS6中解除呈现的UINavigationController

sct*_*lsn 3 objective-c uiviewcontroller uiimagepickercontroller uinavigationcontroller ios6

在我的根UIViewController中,我提出了一个UINavigationController.UINavigationController最终推送另一个视图(让我们称之为MyViewController).如何从MyViewController中解除整个UINavigationController(及其推送的视图)?

从MyViewController,我试过调用[[self.navigationController presentingViewController] dismissViewControllerAnimated:NO completion:nil]但没有发生任何事情.我还尝试首先从导航控制器弹出所有视图控制器,但仍然没有解除导航控制器.

谢谢!

更新:

我已经找到导致此问题的原因,但无法解决问题.上面描述的UINavigationController是UIImagePickerController的自定义子类(我们称之为CameraController),源类型为UIImagePickerControllerSourceTypeCamera.一切都按预期工作(使用下面提供的答案),直到我cameraOverlayView在CameraController上设置自定义viewDidLoad.评论以下几行可以解决问题:

self.showCameraControls = NO;
UIView *overlay = [[[NSBundle mainBundle] loadNibNamed:@"CameraController" owner:self options:nil] objectAtIndex:0];
self.cameraOverlayView = overlay;
Run Code Online (Sandbox Code Playgroud)

iDe*_*Dev 8

你可以打电话dismissViewControllerAnimated:NOself.navigationController自己.

[self.navigationController dismissViewControllerAnimated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)