3

在我的根 UIViewController 中,我展示了一个 UINavigationController。UINavigationController 最终推送另一个视图(我们称之为 MyViewController)。如何从 MyViewController 中关闭整个 UINavigationController(以及它推送的视图)?

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

谢谢!

更新

我已经找到了导致此问题的原因,但无法解决。上面描述的 UINavigationController 是 UIImagePickerController(我们称之为 CameraController)的自定义子类,源类型为 UIImagePickerControllerSourceTypeCamera。一切都按预期工作(使用下面提供的答案),直到我cameraOverlayViewviewDidLoad. 注释掉以下几行可以使事情正常进行:

self.showCameraControls = NO;
UIView *overlay = [[[NSBundle mainBundle] loadNibNamed:@"CameraController" owner:self options:nil] objectAtIndex:0];
self.cameraOverlayView = overlay;
4

1 回答 1

8

你可以调用dismissViewControllerAnimated:NOself.navigationController自己。

[self.navigationController dismissViewControllerAnimated:NO completion:nil];
于 2013-01-23T00:26:27.757 回答