在iOS6中解除呈现的UINavigationController

时间:2013-01-22 20:49:09

标签: objective-c uiviewcontroller ios6 uinavigationcontroller uiimagepickercontroller

在我的根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;

1 个答案:

答案 0 :(得分:8)

您可以在dismissViewControllerAnimated:NO上致电self.navigationController

[self.navigationController dismissViewControllerAnimated:NO completion:nil];